示例。与基础结构命名空间中的类型的名称冲突不可能影响使用您的库的开发人员。
核心命名空间是 System.* 命名空间(不包括应用程序命名空间和基础结构命名空间) 。 System 和 System.Text 都是核心命名空间的示例。应尽可能避免与核心命名空间中的类型 发生名称冲突。
属于特定技术的命名空间将具有相同的第一和第二级标识符 (Company.technology.*)。 应避免在技术命名空间中出现名称冲突。
命名空间一般准则
第 4 页 共 51 页
.NET设计规范 武汉无线飞翔科技有限公司
不要引入宽泛的类型名称,如 Element、Node、Log 和 Message。在通常情况下,这 样极可能导致类型名称冲突。应对宽泛的类型名称进行限定(例如 FormElement、XmlNode
EventLog、SoapMessage) 。
应用程序命名空间准则
不要在单个应用程序模型内为命名空间中的多个类型指定相同的名称。
例如,如果要编写 Windows 窗体应用程序开发人员要使用的特殊控件库,则不应引入 名为 Checkbox 的类型,因为该应用程序模型已存在同名类型 (CheckBox)。
核心命名空间准则
不要指定会与核心命名空间中的任何类型发生冲突的类型名称。
例如,不要使用 Directory 作为类型名称,因为这会与 Directory 类型冲突。
技术命名空间准则
不要分配会与单个技术命名空间内的其他类型发生冲突的类型名称。
不要引入会导致技术命名空间的类型与应用程序模型命名空间中的类型发生冲突的类 型名称
1.5 类、结构和接口的命名
通常,类型名称应该是名词短语,其中名词是由类型表示的实体。例如,Button、Stack
和 File 都具有名称, 用于标识由类型表示的实体。 从开发人员的角度选择标识实体的名称; 名称应反映使用场合。
下面的准则适用于如何选择类型名称。
1. 按照 Pascal 大小写格式,使用名词或名词短语(或偶尔使用形容词短语)为类、接 口和值类型命名。
2. 不要为类名加前缀(如字母 C) 。接口不适用此规则,它应以字母 I 开头。
3. 考虑在派生类的末尾使用基类名称。例如,从 Stream 继承的 Framework 类型以
Stream 结尾,从 Exception 继承的类型以 Exception 结尾。
4. 为接口名称加上字母 I 前缀,以指示该类型为接口。
5. 在定义类/接口对(其中类是接口的标准实现)时,一定要确保类和接口的名称除接 口名称以字母 I 为前缀外,二者应完全相同。例如,Framework 提供 IAsyncResult 接口和
AsyncResult 类。
1.5.1 泛型类型参数命名
要用描述性的名字来命名泛型类型参数,除非一个字母就足够了,而且描述性的名字并不 能增加什么价值。
public interface IsessionChannel
{...}
public delegate Toutput Converter(Tinput from)
public class List{...}
考虑用T来命名参数类型,如果类型只有一个类型参数,且类型参数只有一个字母。
public int Icomparare {...}
public delegate bool Predicate(T item);
public struct Nullable where T:struct {...}
第 5 页 共 51 页
.NET设计规范 要给描述性的类型参数名加上T前缀
public interface IsessionChannel where Tsession ;
武汉无线飞翔科技有限公司
考虑在类型参数名中显示出施加于该类型参数上的限制。
例如,可以把一个被限定为ISession的类型参数命名为Tsession。
1.5.2 常用类型命名
基类 System.Attribute System.Delegate 表 派生自或实现某些特点的核心类型的命名规则 派生类型/实现类型的规范 要给自定义的Atrribute类添加“Attribute”后缀。 要给用于事件处理的委托添加“EventHandler”后缀。 要给用于事件处理之外的那些委托添加“Callback”后缀。 不要给委托添加“Delegate”后缀。 System.EventArgs System.Enum 要添加“EventArgs”后缀。 不要派生自该类;要用编程语言的提供的关键字来代替。例 如在C#中,要用enum关键字。 不要添加“Enum”或“