注释
此内容由 Pearson Education, Inc. 的许可从 框架设计指南:可重用 .NET 库的约定、习惯和模式(第 2 版)重新打印。 该版于2008年出版,此后该书已于 第三版全面修订。 此页上的一些信息可能已过期。
以下命名准则适用于常规类型命名。
应使用 PascalCasing 命名类和结构,使用名词或名词短语。
这区分类型名称与使用谓词短语命名的方法。
将接口命名为形容词短语,或者偶尔使用名词或名词短语。
应很少使用名词和名词短语,它们可能指示类型应为抽象类,而不是接口。
❌ 请勿为类名称提供前缀(例如,“C”)。
✔️ 请考虑将派生类的名称以基类的名称结尾。
这是非常可读的,并清楚地解释了这种关系。 代码中的一些示例包括: ArgumentOutOfRangeException
,这是一种 Exception
, SerializableAttribute
也是一种 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 公司。 保留所有权利。