FxCorp

来源:互联网 发布:苹果手机开启移动数据 编辑:程序博客网 时间:2024/06/05 06:57

Design rules

Abstract types should not have constructors          抽象类不应该拥有构造函数

Assemblies should have valid strong names     程序集应该拥有一个有效的强名称

Avoid empty interfaces                                                 避免使用空的接口

Avoid excessive parameters on generic types         避免在泛型类中使用过多的类型参数

Avoid namespaces with few types                           避免让命名空间含有过少的类型

Avoid out parameters                                            避免使用 out类型的参数

Collections should implement generic interface            集合类应该实现泛型接口

Consider passing base types as parameters            尽量使用基本类型作为参数

Declare event handlers correctly         正确的声明事件处理器,事件处理器不应该具有返回值

Declare types in namespaces                          应该在命名空间里面定义类型,而不是外面

Default parameters should not be used    不应该使用参数默认值(C#没有参数默认值)

Define accessors for attribute arguments      应该为特性的构造方法参数定义访问器,其名字跟构造方法参数仅首字母大小写不一样

Do not catch general exception types              不要捕捉普通的异常(即System.Exception

Do not declare protected members in sealed types       不要在封闭类型中定义受保护的成员

Do not declare static members on generic types    不要在泛型类型中使用静态成员

Do not declare virtual members in sealed types  不要在封闭类型中定义虚成员

Do not declare visible instance fields       不要定义可见的(public/internal)实例域变量

Do not expose generic lists               不要直接暴露范型表

Do not hide base class methods        不要隐藏(使用或者不使用new)基类的方法

Do not nest generic types in member signatures 不要在成员的签名(参数或者返回值)中嵌套泛型类

Do not overload operator equals on reference types 不要在引用类型中重载==操作符

Do not pass types by reference                              不要使用引用(ref or out)传递类型

Enum Storage should be Int32                               枚举应该是 Int32 类型的

Enumerators should be strongly typed                   枚举器应该是强类型的

Enums should have zero value                              枚举应该具有0

Exceptions should be public                           

Generic methods should provide type parameter   泛型类的方法应该提供类型参数

ICollection implementations have strongly typed members 集合接口的实现中应该使用强类型的成员

Implement IDisposable Correctly                                        正确地实现 IDisposable

Implement standard exception constructors自定义的异常应该实现异常类的四个标准构造方法

Indexers should not be multidimensional                            索引不应该是多维的

Interface methods should be callable by child types             接口方法应该可以被子类调用

Lists are strongly typed                                                表应该是强类型的

Mark assemblies with assembly version                               用程序集版本标示程序集

Mark assemblies with CLSCompliant                           使用CLSCompliant特性标示程序集

Mark assemblies with ComVisible使用 System.Runtime.InteropServices.ComVisibleAttribute 特性标示程序集

Mark attributes with AttributeUsageAttribute              使用 AttributeUsageAttribute 特性标示特性类

Mark enums with FlagsAttribute      含有组合的枚举应该使用FlagsAttribute特性标示,相反则不应该

Members should not expose certain concrete types       成员(返回值或者参数)不应该暴露具体类型,尽量使用接口

Move pinvokes to native methods class   将调用移到本地方法类(不是很理解)

Nested types should not be visible            嵌套类型不应该是可见的

Overload operator equals on overloading add and subtract可比较类型应该重写 equals 等方法

Override methods on comparable types   在重写+-运算的时候应该同时重写==操作符

Properties should not be write only          属性不应该是只写的

Provide ObsoleteAttribute message  过时的成员应该使用ObsoleteAttribute特性标示,并提供相应的Message提示使用者

Replace repetitive arguments with params array   使用参数数组代替重复的参数

Static holder types should be sealed         仅含有静态成员的类型应该声明为封闭的

Static holder types should not have constructors    仅含有静态成员的类型应该具有构造方法

String uri overloads call system uri overloads 使用string类型的uri参数的重载应调用系统的使用URI类型参数的重载

Types should not extend certain base types     类型不应该从具体的类(已经过派生的类)继承,比如异常类不应该从ApplicationException继承,而应该从System.Exception继承

Types that own disposable fields should be disposable    含有可释放成员的类型应该是可以释放的(实现IDisposable接口)

Types that own native resources should be disposable   使用了非托管资源的类型应该是可以释放的(实现IDisposable接口)

Uri parameters should not be stringsf                    Uri 参数不应该是string类型的

Uri properties should not be stringsf f                    Uri 属性不应该是string类型的

Uri return values should not be stringsf                Uri 类型的返回值不应该是string类型的

Use events where appropriatef                               在适当的时候使用事件

Use generic event handler instances                      使用泛型的事件处理器实例

Use generics where appropriate                             在适当的时候使用范型

Use integral or string argument for indexers  索引器应该使用整数或者字符串类型的参数

Use properties where appropriate在适当的时候使用属性(而不是以Get或者Set开头的方法)

Validate arguments of public methodspublic的方法的参数应该在方法开头处进行检验(比如是否为null的检验)

Globalization Rules

Avoid duplicate accelerators                    避免在顶层控件中使用重复的快捷键(加速键)

Do not hardcode locale specific strings     不要对本地的特殊字符串(比如特殊的系统路径)进行硬编码

Do not pass literals as localized parameters不要把文本作为需要本地化的参数直接传递(尽量使用资源文件)

Set locale for data types为某些数据类型设定区域和语言属性(DataSetDataTablelocale属性)

Specify CultureInfo指定文化信息(地域和语言信息),在调用接受System.Globalization.CultureInfo 类型参数的方法时应该传递文化信息

Specify IFormatProvider指定格式供应器,在调用接受System.IFormatProvider 类型参数的方法时应该传递格式供应器

Specify MessageBoxOptions指定MessageBox的选项,在调用MessageBox.Show方法时应该传递System.Windows.Forms.MessageBoxOptions,特别在某些从右向左阅读习惯的区域