托管代码的“扩展的设计准则规则”规则集
Microsoft 扩展的规则集在基本设计准则规则 " 展开最大化可用性的设计准则规则 ",并将报告的可维护性问题。 尤其侧重于命名准则。 应考虑加入此规则集,如果项目包括库代码或者,如果要实施编写易于维护的代码最高的条件。
扩展的设计准则规则 " 包括所有 Microsoft 基本设计准则规则。 基本设计准则规则 " 包括所有 Microsoft 最少量建议规则 "。 有关更多信息,请参见 托管代码的“基本设计准则规则”规则集 和 托管代码的“托管建议规则”规则集
下表 " Microsoft 扩展的设计准则规则 " 规则集描述所有规则。
规则 |
说明 |
---|---|
类型拥有一次性字段应为可释放的 |
|
正确声明事件处理程序 |
|
使用标记 AssemblyVersionAttribute 的程序集 |
|
接口方法应是可调用的由子类型 |
|
类型拥有本机资源应是一次性的 |
|
移动 P/Invokes 移到 NativeMethods 类 |
|
不要隐藏了基类方法 |
|
正确实现 IDisposable |
|
不要在意外的位置引发异常。 |
|
避免重复快捷键 |
|
P/Invoke 入口点应存在 |
|
P/Invokes 不应可见 |
|
自动布局类型不应是可见的 COM |
|
对 P/Invoke 后的 GetLastError |
|
COM 可见的类型基础类型应当可见的 COM |
|
COM 应与注册方法 |
|
正确声明 P/Invokes |
|
移除空的终结器 |
|
值类型字段应为可移植 |
|
P/Invoke 声明应可移植 |
|
不在对象的锁。弱标识 |
|
检查安全漏洞的 SQL 查询 |
|
封送指定 P/Invoke 字符串参数的 |
|
在值类型的声明性安全检查 |
|
指针不应可见 |
|
受保护的类型不应显示字段 |
|
方法安全应为类型扩展 |
|
APTCA 方法只应调用 APTCA 方法 |
|
APTCA 类型只应扩展 APTCA 基类型 |
|
不要取消显示链接要求的方法 |
|
重写链接要求应与中的基础 |
|
在外部尝试的换行易受攻击的最后子句 |
|
键入链接要求继承要求 |
|
安全关键类型不能参与类型等效 |
|
默认构造函数必须至少具有重要的与基类型默认构造函数 |
|
委托必须绑定到具有一致的透明度的方法 |
|
,并重写基方法时,方法必须保持一致的透明度 |
|
透明方法必须只包含可验证的 IL |
|
透明方法不能调用使用 SuppressUnmanagedCodeSecurity 属性的方法 |
|
透明代码不能引用安全关键项目 |
|
透明方法不能满足 Linkdemand |
|
类型必须至少具有重要的与它们的基类型约束和接口 |
|
透明方法不能使用安全断言 |
|
透明方法不能调用到本机代码 |
|
保留堆栈详细信息的重新 |
|
不要配置对象多次 |
|
初始化值类型静态字段内联 |
|
不要用 WebMethod 的服务组件 |
|
应配置一次性字段 |
|
不要对构造函数的可重写的方法 |
|
一次性类型应声明终结器 |
|
终结器应调用基类终结器 |
|
实现序列化构造函数 |
|
重载在重写 ValueType.Equals 的相等运算符 |
|
标记窗口入学人数表点与 STAThread |
|
标记所有非可序列化字段 |
|
调用了 ISerializable 类型的基类方法 |
|
用 SerializableAttribute 的实现 ISerializable 类型 |
|
正确执行序列化方法 |
|
正确实现 ISerializable |
|
提供正确的参数传递给格式的方法 |
|
正确测试 Nan |
|
不要声明泛型类型的静态成员 |
|
不要显示泛型列表 |
|
使用泛型事件处理程序实例 |
|
泛型方法应提供类型参数 |
|
避免在泛型类型的额外参数 |
|
不要嵌套泛型类型成员签名 |
|
在适当的时候使用普通 |
|
枚举应具有零值 |
|
集合应实现泛型接口 |
|
通过基类型的考虑作为参数 |
|
抽象类型不应有构造函数 |
|
重载在重载运算符等于增加和减少 |
|
使用标记 CLSCompliantAttribute 的程序集 |
|
使用标记 ComVisibleAttribute 的程序集 |
|
用 AttributeUsageAttribute 的属性 |
|
定义特性参数的访问器 |
|
索引器不应是多维数组 |
|
在适当的时候使用属性 |
|
使用参数数组替换重复参数 |
|
不应使用默认参数 |
|
用 FlagsAttribute 枚举 |
|
枚举存储区应该是 Int32 |
|
在适当的时候使用事件 |
|
不要捕捉一般异常类型 |
|
实现标准异常构造函数 |
|
嵌套类型不应是可见的。 |
|
ICollection 实现具有强类型成员 |
|
在可比较类型的重写方法 |
|
枚举数应是强类型的。 |
|
列表是强类型 |
|
提供 ObsoleteAttribute 消息 |
|
为索引器使用整型或字符串参数 |
|
属性不应仅写入 |
|
不要重载等于引用类型的运算符 |
|
不要声明密封类型上的受保护成员 |
|
不要声明密封类型上的虚拟成员 |
|
声明命名空间 |
|
不要声明可见实例字段 |
|
应通过静态容纳器类型 |
|
静态持有人类型不应有构造函数 |
|
URI 的参数不应是字符串 |
|
URI 返回值不应是字符串 |
|
URI 属性不应是字符串 |
|
字符串 URI 重载调用 System.Uri 重载 |
|
类型不应扩展某些基类型 |
|
成员不应显示某些具体类型 |
|
异常应是公共的 |
|
变量名不应与字段名 |
|
避免额外的复杂性 |
|
标识符的情况应该由多个不同 |
|
标识符不应与关键字 |
|
检查未使用的参数 |
|
移除未使用的局部 |
|
避免额外的本地 |
|
initialize 引用类型静态字段内联 |
|
避免不必要的私有代码 |
|
避免实例化的内部类 |
|
避免打开的属性 |
|
prefer 为了锯齿状在多维数组 |
|
override equals 和相等运算符在值类型 |
|
属性不应返回数组 |
|
使用字符串长度,测试空字符串 |
|
成员标记为 static |
|
避免未使用的私有字段 |
|
不要保留引发的异常类型 |
|
使用 Win32 API 托管等效项 |
|
正确实例化参数异常 |
|
非常数字段不应可见 |
|
不要用 FlagsAttribute 枚举 |
|
不要引发该异常子句的异常 |
|
应保护终结器 |
|
不要降低继承的成员可见性 |
|
成员应由多个不同的返回类型 |
|
在重载运算符相等的 override equals |
|
运算符重载将备用项名称 |
|
运算符应具有对称重载 |
|
应只读取集合属性 |
|
为可变参数使用参数 |
|
通过 System.Uri 对象而不是字符串 |
|
为可选字段提供反序列化方法 |
|
避免使用的类型的命名空间 |
|
避免参数 |
|
避免 null 的接口 |
|
不要通过引用类型 |
|
验证公共方法的参数 |
|
避免额外的继承 |
|
检查令人误解的字段名 |
|
避免 unmaintainable 代码 |
|
避免额外的类耦合 |
|
不要将枚举值 “Reserved |
|
应正确负载资源字符串组合词 |
|
应正确负载组合词 |
|
应正确拼写资源字符串 |
|
应正确拼写标识符 |
|
标识符不应包含下划线 |
|
应正确负载标识符 |
|
标识符应正确的后缀 |
|
标识符不应存在不正确的后缀 |
|
不要在枚举值加前缀类型名称 |
|
操作不应在标题之前有 |
|
标志枚举应具有复数形式的名称 |
|
标识符应正确的标题 |
|
仅 FlagsAttribute 枚举应具有复数形式的名称 |
|
参数名不应与成员名称 |
|
标识符不应包含类型名称 |
|
属性名不应与 get 方法 |
|
标识符不应存在不正确的前缀 |
|
类型名称不应该与命名空间 |
|
参数名称应与基声明 |
|
使用首选术语 |
|
应正确拼写文本 |