.net代码编写规范

发表于:2008-4-02 14:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

分享:

26. Use preferred terms
        优先使用某些项目或者名称,以下这些,后者为优先使用的
ComPlus/EnterpriseServices
Cancelled/Canceled
Indices/Indexes
LogIn/LogOn
LogOut/LogOff
SignOn/SignIn
SignOff/SignOut
Writeable/Writable
五、 Performance(性能规则)
1. Avoid calls that require unboxing 
        避免调用一个方法,它返回object类型,而你需要的是一个值类型(需要对返回值进行拆箱操作)
2. Avoid costly calls where possible 
        尽可能的避免进行代价高昂的调用
3. Avoid excessive locals
        避免使用过多的局部变量(多于64个,部分可能是编译器生成的)
4. Avoid uncalled private code
        避免声明在程序集内从来未被调用的私有成员(private和internal),以下除外:
        明确的接口成员
        静态构造方法
        静态的Main方法(不含参数或仅包含一个string数组的参数的)
序列化构造方法
        标记有System.Runtime.InteropServices.ComRegisterFunctionAttribute或者 System.Runtime.InteropServices.ComUnregisterFunctionAttribute.特性的
重写的方法
5. Avoid uninstantiated internal classes
        避免声明不会被实例化的内部类,以下情况除外
        值类型
        抽象类型
        枚举
        委托
        编译器生成的数组类型
        仅含有静态成员的内部类
6. Avoid unnecessary string creation 
        避免创建不必要的string实例(犹指‘通过ToLower和ToUpper创建的string’),含以下情况
        对于同一个string实例多次调用ToLower和ToUpper(建议:将返回值赋给一个局部变量,然后使用此局部变量)
        使用equals,’==‘,!=比较‘通过ToLower和ToUpper创建的string’(建议:使用String.Compare比较)
        向一个System.Collections.Specialized.HybridDictionary类型的成员传递‘通过ToLower和ToUpper创建的string’(建议:HybridDictionary具有一个指示是否忽略大小写的参数的构造方法重载,使用此重载并传递一个true值进去)
7. Avoid unsealed attributes 
        避免声明未封闭的特性(attributes)(建议:声明为sealed/ NotInheritable-vb.net或者abstract)
8. Avoid unused parameters
        避免在方法声明中包含不会被使用的参数,以下情况除外
        代理引用的方法
        作为事件处理程序的方法
        抽象方法(abstract)
        虚方法(virtual)
        重写的方法(override)
        外部方法(extern)
9. Dispose methods should call SuppressFinalize
        Dispose方法应该调用SuppressFinalize,以请求系统不要调用其Finalize方法
10. Do not call properties that clone values in loops 
        不要在循环中使用‘返回一个Clone的对象的属性’(每次返回‘引用不同’的对象,会导致创建大量的相同的对象)
11. Do not cast unnecessarily 
        不要进行不必要的类型转换(特别是尝试性的转换,建议:在转换前可以使用is操作符来判断转换能够成功)
12. Do not concatenate strings inside loops 
        不要在循环内串联string(建议:使用StringBuilder代替string)
13. Do not ignore method results 
        不要忽略方法的返回值(通常调用string的方法会返回新的string)
14. Do not initialize unnecessarily
        不要进行不必要的初始化(比如将类成员初始化为它的默认值)
15. Initialize reference type static fields inline
        在静态成员声明的时候直接初始化或者调用静态方法初始化(不要使用静态构造方法来初始化静态成员,静态构造方法会影响性能),以下情况除外:
        初始化对全局状态的影响是代价高昂的,而且类型在使用前不需要进行初始化的
        在不需要访问该类型的静态成员的情况下,全局状态的影响就可以被访问到的
16. Override equals and operator equals on value types
        对于公有的值类型,重写equals方法和’==‘操作符(如果你期望用户对实例进行比较或者排序,或者作为哈希表的键)
17. Prefer jagged arrays over multidimensional 
        使用锯齿形数组代替多维数组(当数组各元素的长度可能不一致时)
        注意:公共语言规范(CLS)不支持锯齿数组
18. Properties should not return arrays 
        公有类型的属性不应该返回数组(数组类型的属性无法进行写保护,即使是只读的,除非每次返回不同的拷贝,但是这样会让调用者产生迷惑。建议:改成方法)
19. Remove empty finalizers
        移除空的终结器
20. Remove unused locals
        移除未使用过的局部变量
21. Test for empty strings using string length
        使用length属性测试字符串是否为空(原因:不要使用==””、==String..Empty、Equals(“”)等方法,使用Length属性的效率是最高的;null==empty比较不会抛出异常;在DotNetFrameWork2里面可以使用IsNullOrEmpty方法来判断字符串是否为null或者empty)
22. Use literals where appropriate
        在适当的时候使用const代替static readonly(const是编译时赋值的)

33/3<123
7月博客更文活动,赢取精美礼品,还有机会成为签约作者!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号