类、结构和接口的名称

通常,类型名称应该是名词短语,其中名词是由类型表示的实体。 例如,ButtonStackFile 都具有名称,用于标识由类型表示的实体。 从开发人员的角度选择标识实体的名称;名称应反映使用场合。

下面的准则适用于如何选择类型名称。

按照 Pascal 大小写格式,使用名词或名词短语(或偶尔使用形容词短语)为类、接口和值类型命名。

不要为类名加前缀(如字母 C)。

接口不适用此规则,它应以字母 I 开头。

考虑在派生类的末尾使用基类名称。

例如,从 Stream 继承的 Framework 类型以 Stream 结尾,从 Exception 继承的类型以 Exception 结尾。

为接口名称加上字母 I 前缀,以指示该类型为接口。

在定义类/接口对(其中类是接口的标准实现)时,一定要确保类和接口的名称除接口名称以字母 I 为前缀外,二者应完全相同。

例如,Framework 提供 IAsyncResult 接口和 AsyncResult 类。

泛型类型参数的名称

泛型是 .NET Framework 2.0 版的主要新功能。 下面的准则适用于为泛型类型参数选择正确的名称。

用描述性名称为泛型类型参数命名,除非单个字母的名称已完全可以自我说明而无需描述性名称。

IDictionary<TKey, TValue> 是一个符合此准则的接口的示例。

对具有一个单字母类型参数的类型,考虑将字母 T 用作这些类型的类型参数名称。

将字母 T 作为描述性类型参数名称的前缀。

考虑在参数名称中指示置于类型参数上的约束。 例如,可以将带有 ISession 约束的参数命名为 TSession。

常见类型的名称

下面的准则提供的命名约定有助于开发人员了解某些类的使用场合。 准则中提及的从某个其他类型继承的类型,指的是所有的继承者,而不只是直接继承的类型。 例如,指引"不要添加后缀Exception继承的类型Exception。"意味着任何类型具有Exception在其继承层次结构应该有一个名称,在结束Exception。

每条这样的准则还用来保留指定的后缀;除非类型满足该准则表述的条件,否则不应使用该后缀。 例如,如果类型不是从 Exception 直接或间接继承的,则类型名称不能以 Exception 结尾。

向自定义特性类添加 Attribute 后缀。

ObsoleteAttributeAttributeUsageAttribute 是符合此准则的类型名称。

向在事件中使用的类型(如 C# 事件的返回类型)的名称添加 EventHandler 后缀。

AssemblyLoadEventHandler 是符合此准则的委托名称。

向不是事件处理程序的委托的名称添加 Callback 后缀。

不要向委托添加 Delegate 后缀。

向扩展 System.EventArgs 的类添加 EventArgs 后缀。

不要从 System.Enum 类派生;使用当前所用语言支持的关键字。 例如,在 C# 中应使用 enum 关键字。

向从 System.Exception 继承的类型添加 Exception 后缀。

向实现 System.Collections.IDictionary 或 System.Collections.Generic.IDictionary<TKey, TValue> 的类型添加 Dictionary 后缀。 注意,System.Collections.IDictionary 是特定类型的集合,但此准则的优先级高于以下更为一般的集合准则。

向实现 System.Collections.IEnumerable、System.Collections.ICollection、System.Collections.IList、System.Collections.Generic.IEnumerable<T>、System.Collections.Generic.ICollection<T> 或 System.Collections.Generic.IList<T> 的类型添加 Collection 后缀。

向从 System.IO.Stream 继承的类型添加 Stream 后缀。

向从 System.Security.CodeAccessPermission 继承的类型或实现 System.Security.IPermission 的类型添加 Permission 后缀。

枚举的名称

不要在枚举值名称中使用前缀。 例如,不要对 ADO 枚举使用 ad 之类的前缀,也不要对多格式文本枚举使用 rtf 之类的前缀,依此类推。

这还意味着不应在枚举值名称中包含枚举类型名称。 下面的代码示例演示了不正确的枚举值命名。

Public Enum Teams

    TeamsAlpha
    TeamsBeta
    TeamsDelta

End Enum
public  enum Teams
{
    TeamsAlpha,
    TeamsBeta,
    TeamsDelta
}

不要将 Enum 用作枚举类型的后缀。

不要在标志枚举的名称中添加 Flags 作为后缀。

对枚举使用单数名称,除非枚举值是位域。

对使用位域值的枚举(也称为标志枚举)使用复数名称。

部分版权所有 2005 Microsoft Corporation。 保留所有权利。

部分版权所有 Addison-Wesley Corporation。 保留所有权利。

设计指引的详细信息,请参阅"框架设计准则: 公约、 成语和可重复使用的模式。网络图书馆"书 Krzysztof Cwalina 和布拉德 · 艾布拉姆斯,2005年艾迪生 - 韦斯利,发表。

请参见

其他资源

类库开发的设计准则

名称准则