.NET 指南:类、结构,以及接口的名称
2007-01-28 11:42
302 查看
通常,类型的名称应该是名词短语,而名词又是通过类型而被呈现的实体。例如,Button、Stack,以及 File 都各自拥有通过类型被呈现的实体而定义的标识名称。从开发者的观点出发而选择实体的标识名称;并且名称还应该反映出使用情节。
如下所示的指导方针适用于类型名称的选择。
使用名词、名词短语,或者场景形容词短语并以 Pascal 包装来为类、接口,以及值类型进行命名。不要在类名称中使用前缀(如字母 C)。应该在接口名称的开始部分使用字母 I,这是该规则的一个例外。
考虑在被继承类名称的结尾部分使用基类的名称。例如,继承自 Stream 的 Framework 类型应该以 Stream 作为结尾,而继承自 Exception 的类型则应该以 Exception 作为结尾。
在接口名称中使用前缀字母 I 来表示该类型是一个接口。确保在对一个 <类/接口> 对进行定义并且该类又是接口的一个标准实现的时候,名称才不同于接口名称的字母 I 前缀。例如,Framework 提供了 IAsyncResult 接口和 AsyncResult 类。
使用描述性的名称来为常规类型参数进行命名,除非一个单独的字母名称能够拥有完整的自我解释性以及不需要为一个描述性的名称添加值。IDictionary 就是一个遵循这个指导方针的接口范例。
考虑为包含一个单独字母的类型参数的类型使用字母 T 来作为类型参数的名称。使用包含字母 T 的描述性类型参数名称来作为前缀。考虑一个表示强制性类型参数已经被放置在参数名称中。例如,一个被强制成 ISession 的参数可以被称为 TSession。
这些指导方针同样适合于被指定的后缀;除了通过适应指导方针标准而被制定的类型之外,并且它不能够使用后缀。例如,如果你的类型没有直接或间接地继承自 Exception,那么就不要在它的名称的结尾部分使用 Exception 后缀。
把后缀 Attribute 添加到自定义的参数类。ObsoleteAttribute 和 AttributeUsageAttribute 就是遵循这个指导方针的类型名称。
为在事件中被使用的类型(如 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。
如下所示的指导方针适用于类型名称的选择。
使用名词、名词短语,或者场景形容词短语并以 Pascal 包装来为类、接口,以及值类型进行命名。不要在类名称中使用前缀(如字母 C)。应该在接口名称的开始部分使用字母 I,这是该规则的一个例外。
考虑在被继承类名称的结尾部分使用基类的名称。例如,继承自 Stream 的 Framework 类型应该以 Stream 作为结尾,而继承自 Exception 的类型则应该以 Exception 作为结尾。
在接口名称中使用前缀字母 I 来表示该类型是一个接口。确保在对一个 <类/接口> 对进行定义并且该类又是接口的一个标准实现的时候,名称才不同于接口名称的字母 I 前缀。例如,Framework 提供了 IAsyncResult 接口和 AsyncResult 类。
常规类型参数的名称
常规是 .NET Framework 2.0 中一个主要的新特征。下列指导方针中涵盖了为常规类型参数而选择正确的名称。使用描述性的名称来为常规类型参数进行命名,除非一个单独的字母名称能够拥有完整的自我解释性以及不需要为一个描述性的名称添加值。IDictionary 就是一个遵循这个指导方针的接口范例。
考虑为包含一个单独字母的类型参数的类型使用字母 T 来作为类型参数的名称。使用包含字母 T 的描述性类型参数名称来作为前缀。考虑一个表示强制性类型参数已经被放置在参数名称中。例如,一个被强制成 ISession 的参数可以被称为 TSession。
公共类型的名称
下列指导方针提供了帮助开发者对为某些类而打算使用的情节进行认可的命名约定。这些指导方针引用到了继承自一些其他类型的类型,并适用于所有的继承器(不单单只是直接继承)。例如,指导方针:[为继承自 Exception 的类型添加 Exception 后缀。]表示任何在继承层次中拥有 Exception 的类型都应该在名称的结尾部分中拥有 Exception 后缀。这些指导方针同样适合于被指定的后缀;除了通过适应指导方针标准而被制定的类型之外,并且它不能够使用后缀。例如,如果你的类型没有直接或间接地继承自 Exception,那么就不要在它的名称的结尾部分使用 Exception 后缀。
把后缀 Attribute 添加到自定义的参数类。ObsoleteAttribute 和 AttributeUsageAttribute 就是遵循这个指导方针的类型名称。
为在事件中被使用的类型(如 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 }不要在枚举类型中使用 Enum 作为后缀。不要把 Flags 作为后缀添加到标记枚举的名称中。为枚举使用一个唯一的名称,除了它的值是字节字段之外。为把字节字段作为值的枚举使用一个复数名称,并同样被称作标记枚举。
相关文章推荐
- 将.NET中的Color结构转换至于ArcGIS Engine中的IRgbColor接口(转)
- .NET 指南:命名空间的名称
- .NET 指南:类与结构之间的选择
- 本附录介绍iOS系统包含的框架,它们为编写iOS平台的软件提供必要的接口。下面的表格尽可能地列出框架中的类、方法、函数、类型以及常量使用的关键前缀,请避免在您的符号名称中使用这些前缀。
- go 指南--接口方法篇(接口以及方法的运用)
- .NET 指南:接口的设计
- .NET 指南:结构的设计
- Symbian入门指南第二章:Symbian开发环境的建立以及目录结构的说明
- 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、文件夹结构、设置压缩和对中文文件名称的支持、以及Catalina这个名字的由来……等)
- .net treeview使用方法以及树状结构的应用 4000
- .NET 指南:类与接口之间的选择
- .net 微信APP支付接口的开发流程以及坑
- 将.NET中的Color结构转换至于ArcGIS Engine中的IColor接口
- Quartz.net官方开发指南 第十课: 配置、资源使用以及SchedulerFactory
- Quartz.net官方开发指南 第十课: 配置、资源使用以及SchedulerFactory
- libgdx的目录结构 以及常见接口
- 学习.NET (4) Inside Assembly -研究Assembly的结构,强命名Assembly的生成以及Delayed signing的过程
- HibernateCallBack原理以及利用回调接口优化代码结构 .
- .NET 指南:类型成员的名称
- Symbian入门指南第二章:Symbian开发环境的建立以及目录结构的说明