类、结构和接口的名称

注释

此内容由 Pearson Education, Inc. 的许可从 框架设计指南:可重用 .NET 库的约定、习惯和模式(第 2 版)重新打印。 该版于2008年出版,此后该书已于 第三版全面修订。 此页上的一些信息可能已过期。

以下命名准则适用于常规类型命名。

应使用 PascalCasing 命名类和结构,使用名词或名词短语。

这区分类型名称与使用谓词短语命名的方法。

将接口命名为形容词短语,或者偶尔使用名词或名词短语。

应很少使用名词和名词短语,它们可能指示类型应为抽象类,而不是接口。

❌ 请勿为类名称提供前缀(例如,“C”)。

✔️ 请考虑将派生类的名称以基类的名称结尾。

这是非常可读的,并清楚地解释了这种关系。 代码中的一些示例包括: ArgumentOutOfRangeException,这是一种 ExceptionSerializableAttribute也是一种 Attribute。 但是,在应用本指南时,必须合理判断:例如,该 Button 类是一种 Control 事件,尽管 Control 它的名称中未显示。

✔️ 请使用字母 I 作为接口名称的前缀,以指示类型为接口。

例如, IComponent (描述性名词)、 ICustomAttributeProvider (名词短语)和 IPersistable (形容词)是适当的接口名称。 与其他类型名称一样,请避免缩写。

✔️ 在定义类接口对时,请确保名称仅与接口名称上的“I”前缀不同,其中类是接口的标准实现。

泛型类型参数的名称

泛型已添加到 .NET Framework 2.0。 此功能引入了一种称为 类型参数的新标识符。

✔️ 请勿使用描述性名称命名泛型类型参数,除非单字母名称完全是自我解释的,并且描述性名称不会增加值。

✔️ 请考虑将 T 类型参数名称用作具有一个单字母类型参数的类型。

public int IComparer<T> { ... }
public delegate bool Predicate<T>(T item);
public struct Nullable<T> where T:struct { ... }

✔️ 给描述性类型参数名称添加前缀 T

public interface ISessionChannel<TSession> where TSession : ISession {
    TSession Session { get; }
}

请考虑在参数名称中指示对类型参数施加的约束。

例如,限制为 ISession 的参数可能被称为 TSession

常见类型的名称

✔️ 当命名类型派生自或实现某些 .NET Framework 类型时,请遵循下表中所述的准则。

基本类型 派生/实现类型准则
System.Attribute ✔️ 请将后缀“Attribute”添加到自定义属性类的名称。
System.Delegate ✔️ 请为事件中使用的委托名称添加后缀“EventHandler”。

✔️ 请将后缀“Callback”添加到非事件处理程序使用的委托的名称。

❌ 请勿将后缀“委托”添加到委托。
System.EventArgs ✔️ 请添加后缀“EventArgs”。
System.Enum ❌ 请勿从此类派生;请改用语言支持的关键字;例如,在 C# 中使用 enum 关键字。

❌ 请勿添加后缀“Enum”或“Flag”。
System.Exception ✔️ 请添加后缀“异常”(Exception)。
IDictionary
IDictionary<TKey,TValue>
✔️ 请添加后缀“Dictionary”。请注意, IDictionary 这是一种特定的集合类型,但此准则优先于遵循的更常规的集合准则。
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✔️ 请添加后缀“Collection”。
System.IO.Stream ✔️ 请添加后缀“Stream”。
CodeAccessPermission IPermission ✔️ 请添加后缀“权限”。

命名枚举

枚举类型(也称为枚举)的名称通常应遵循标准类型命名规则(PascalCasing 等)。 但是,还有一些特别适用于枚举的其他准则。

✔️ 对枚举使用单一类型名,除非其值为位字段。

✔️ 对具有位字段作为值的枚举使用复数类型名称,也称为标志枚举。

❌ 请勿在枚举类型名称中使用“枚举”后缀。

❌ 请勿在枚举类型名称中使用“Flag”或“Flags”后缀。

❌ 请勿在枚举值名称上使用前缀(例如,ADO 枚举使用“ad”和富文本枚举使用“rtf”等)。

部分内容 © 2005, 2009 Microsoft 公司。 保留所有权利。

经皮尔逊教育有限公司许可,从由 Krzysztof Cwalina 和 Brad Abrams 撰写的《框架设计准则:可重用 .NET 库的约定、习惯和模式》一书中重新印刷。此书由 Addison-Wesley Professional 于 2008 年 10 月 22 日出版,是微软 Windows 开发系列的一部分。

另请参阅