《.NET 规范》第 3 章 命名规范

3.1 大小写约定

  要把 PascalCasing 用于由多个单词构成的命名空间、类型以及成员的名字。

  要把 camelCasing 用于参数的名字。

  要把两个字母的首字母缩写词全部大写,除非它是 camelCasing 风格的参数名的第一个单词。

  要把由三个或三个以上字母组成的首字母缩写词的第一个字母大写。只有第一个字母大写,除非首字母缩写词是 camelCasing 风格的标识符的第一个单词。

  不要把 camelCasing 风格的标识符头部的任何首字母缩写词的任何字母大写,无论首字母缩写词的长度是多少。

  不要把所谓闭合形式的复合词中每个单词的首字母大写。

  不要以为所有的编程语言都是区分大小写的,实际情况并非如此。不应该仅仅通过大小写来区分名字。

  

3.2 通用命名约定

  要为标识符选择易于阅读的名字。

  要更看重可读性,而不是更看重简洁性。

  不要使用下划线、连字符以及其他任何既非字母数字的字符。

  不要使用匈牙利命名法。

  避免使用与广泛使用的编程语言的关键字有冲突的标识符。

  不要使用缩写词和缩略词作为标识符名字的组成部分。例如,要使用 GetWindow,而不用 GetWin。

  不要使用未被广泛接受的首字母缩写词,即使是被广泛接受的首字符缩写词,也只应该在必需的时候才使用。

  要给类型名使用语义上有意义的名字,而不要使用语言特有的关键字。

  要使用 CLR 的通用类型名,而不是使用语言特有的别名 - 如果除了类型之外,标识符没有其他的语义。

  要使用常见的名字,比如 value 或 item,而不要重复类型的名字 - 如果除了类型之外,标识符没有其他的语义,而且参数的类型无关紧要。

  要在创建已有 API 的新版本时使用与旧 API 相似的名字。

  要优先使用后缀而不是前缀来表示已有 API 的新版本。

  考虑使用全新但有意义的标识符,而不是简单地给已有标识符添加后缀或前缀。

  要使用数字后缀来表示已有 API 的新版本 - 如果已有 API 的名字是唯一有意义的名字(也就是说,它是一个工业标准),不适宜添加后缀(或改名)。

  不要在标识符中使用“Ex”(或类似的)后缀来区分相同 API 的不同版本。

  要引入对 64 位整数(long)而非 32 位整数进行操作的新版 APi 时使用“64”后缀。只有当已经存在 32 位的 API 时才需要采用这种方法,对只有 64 位版本的全新 API 则不需要这样做。

  

3.3 程序集和 DLL 的命名

3.4 命名空间的命名

  要用公司名称作为命名空间的前缀,这样就可以避免与其它公司使用相同的的名字了。

  要使用稳定的、与版本无关的产品名称作为命名空间的第二层。

  不要根据公司的组织架构来决定命名空间的层次结构,因为公司内部组织的名称一般经过一段时间后可能会改变。

  要使用 PascalCasing 大小写风格,并用点号来分隔命名空间的各部分。如果商标使用了非传统的大小写风格,那么即使改风格与常规的大小写风格相悖,也还是应该遵循商标的大小写风格。

  考虑在适当地时候在命名空间中使用复数形式。

  不要用相同的名字来命名命名空间以及位于该命名空间的类型。

  不要引入太一般化的类型名,比如: Element、Node、Log 以及 Message。

  不要给类型起会与核心命名空间中的任何类型产生冲突的名字。

  不要给类型起会与同一技术中的其它类型产生冲突的名字。

  不要在技术命名空间和应用程序模型命名空间的类型之间引入类型名冲突(除非不打算将该技术与该应用程序模型一起使用)。

  

3.5 类、结构和接口的命名

  要用名词或名词短语来给类和结构命名。在命名时要使用 PascalCasing 大小写风格。这使类型名和方法区分开,后者采用动词短语来命名。

  要用形容词短语来给接口命名,在少数情况下也可以使用名词或名词短语。

  不要给类名加前缀。

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

  要让接口的名字以字母 I 开头,这样可以显示出该类型是一个接口。

  要确保一对类/接口的名字只相差一个“I”前缀,如果该类是该接口的标准实现。

  要用描述性的名字来命名泛型类型参数-除非一个字母就可以说明含义就无需使用描述性的名字。

  考虑用单个字母 T 来命名参数类型 - 如果类型只有一个类型参数并且类型参数只有一个字母。

  要给描述性的类型参数名加上 T 前缀。

  考虑在类型参数名中显示出施加于该类型参数上的约束。

  要遵循描述的规范 - 如果要从 .NET 框架的类型派生新类,或者要实现 .NET 框架中的类型。

  要用单数名词来命名枚举类型,除非它表示的是位域。

  要用复数名词来命名表示位域的枚举类型,这样的枚举类型也成为标记枚举。

  不要给枚举类型的没名字添加“Enum”后缀。

  不要给枚举类型的名字添加“Flag”或“Flags”后缀。

  不要给枚举类型值的名字添加前缀。

3.6 类型成员的命名

  要用名词、名词短语或形容词来命名属性。

  不要让属性名看起来与“Get”方法的名字相似。

  要用描述集合中项目短语的复数形式来命名集合属性,而不要使用短语的单数形式加“List”或“Collection”后缀。

  要用肯定性的短语(CanSeek 而不是 CantSeek)来命名布尔属性。如果有帮助,还可以有选择性地给布尔属性添加“Is”、“Can”或“Has”等前缀。

  考虑用属性的类型名来命名属性。

  要用动词或动词短语来命名事件。

  要用现在时和过去时来赋予事件名之前和之后的概念。

  不要用“Before”和“After”前缀或后缀来区分前置事件和后置事件。

  要在命名事件处理函数(用作事件类型的委托)时加上“EventHandler”后缀。

  要在事件处理函数中用 sender 和 e 作为两个参数的名字。

  要在命名事件的的参数类时加上“EventArgs”后缀。

  要在命名字段时使用 PascalCasing 大小写风格。

  要用名词、名词短语或形容词来命名字段。

  不要给字段名称加前缀。

3.7 参数的命名

  要在命名参数时使用 camelCasing 大小写风格。

  要使用具有描述性的参数名。

  考虑根据参数的意思而不是参数的类型来命名参数。

  要使用 left 和 right 来命名重载二元操作符的参数 - 如果参数没有具体的含义。

  要使用 value 来命名重载一元操作符的参数 - 如果参数没有具体的含义。

  考虑使用有意义的名字来命名重载操作符的参数 - 如果这样做可以清晰地表达名字的意义。

  不要在命名重载操作符的参数时,使用缩写或数字编号。

  

3.8 资源的命名

  要在命名资源键时使用 PascalCasing 大小写风格。

  要使标识符的名字具有描述性而不是使名字变短。

  不要使用各主要 CLR 编程语言特有的关键字。

  要在命名资源时仅使用字母、数字和下划线。

  要在命名异常消息的资源时遵循下面的命名约定。

  

【出处】http://www.cnblogs.com/liqingwen/p/7152673.html

《.NET 设计规范》第 3 章 命名规范的更多相关文章

  1. .NET设计规范————命名规范

    NET设计规范:约定.惯用法与模式———命名规范 前言:          最近在看<.NET设计规范:约定.惯用法与模式>一书,主要还是讲.NET的设计规范,以前对这一块也不是特别在意, ...

  2. NET设计规范(二) 命名规范

    http://blog.csdn.net/richnaly/article/details/6280294 第2章       命名规范 2.1.   大小写约定 2.1.1.    标识符的大小写规 ...

  3. 3.命名规范《.NET设计规范》

    3.命名规范 3.1 大小写约定 使用合适的大小写增强名字可读性. 3.1.1 标识符的大小写规则 标识符的每个单词首写字幕大写.不要用下划线. PascalCasing camelCasing Pa ...

  4. 第四章 android 命名规范和编码规范

    书里面讲的比较常见,单个人也是有不同的观点: 因为android绝大部分使用java开发的,因此java相关规范适用于android: Google Style: 英文地址:http://google ...

  5. [规则原则定理]规则原则定理章3Java命名规范

    JAVA命名规范 驼峰法则: 将所有字母都小写(包括缩写),然后将单词的第一个字母大写. 每个单词的第一个字母都大写,来得到大驼峰式命名. 除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰 ...

  6. Swift常量和变量以及命名规范

    我们在上一章中介绍了如何使用Swift编写一个HelloWorld小程序,其中就用到了变量.常量和变量是构成表达式的重要组成部分.常量在声明和初始化变量时,在标识符的前面加上关键字let,就可以把该变 ...

  7. Web UI 网站用户界面设计命名规范

    Web UI 网站用户界面设计命名规范 WEB UI设计命名规范,也就是网站用户界面设计(网页设计)命名规范. 这套规范并非单纯的CSS.html或JavaScript命名规范,它涉及了很多使用Pho ...

  8. C语言常见命名规范

    C语言常见命名规范   1 常见命名规则 比较著名的命名规则首推匈牙利命名法,这种命名方法是由Microsoft程序员查尔斯·西蒙尼(Charles Simonyi) 提出的.其主要思想是“在变量和函 ...

  9. mysql命名规范

    1.数据库表命名规范: (1)表名前应该加上前缀,表的前缀一个用系统或模块的英文名称缩写,前缀全部大写或首字母大写,表名中包含的单词首字母大写. (2)数据库表名应该有意义,并且易于理解,最好使用可以 ...

随机推荐

  1. dubbo源码—Service Invoke

    dubbo的远程调用过程是怎么样的? dubbo远程过程调用经过了那些处理? 发起远程调用的时候究竟传了什么数据给provider? 要解决这些问题,欢迎一起探讨走进dubbo源码栏目. 在servi ...

  2. CTF---安全杂项入门第二题 A记录

    A记录分值:20 来源: sammie 难度:中 参与人数:2255人 Get Flag:566人 答题人数:621人 解题通过率:91% 他在看什么视频,好像很好看,不知道是什么网站的. 还好我截取 ...

  3. 51Nod 1046 A^B Mod C(日常复习快速幂)

    1046 A^B Mod C 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = ...

  4. Hbuilder实用技巧

    转自:http://blog.csdn.net/qq_34099161/article/details/51451712 1. Q:怎么实现代码追踪? A:在编辑代码时经常会出现需要跳转到引用文件或者 ...

  5. spring如何控制事务

    Spring 的事务,可以说是 Spring AOP 的一种实现. AOP面向切面编程,即在不修改源代码的情况下,对原有功能进行扩展,通过代理类来对具体类进行操作. spring是一个容器,通过spr ...

  6. [国嵌攻略][117][LED驱动程序设计]

    LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() 1.编译/安装驱动 make cp leddev.ko ... ...

  7. 基于 fireasy 构建的 asp.net core 示例

    最近花时间弄了一个关于fireasy使用的demo,已放到 github 上供大家研究,https://github.com/faib920/zero 该 demo 演示了如何使用 fireasy 创 ...

  8. EhCache 在集群环境中使用缓存系统

    EhCache 分布式缓存/缓存集群  EhCache提供了很多种解决方案 这里只介绍一种最常用而且简单的RMI方式分布式缓存决绝方案 Automatic Peer Discovery 自动成员发现方 ...

  9. Linux命令之远程下载命令:wget

    转自:http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Li ...

  10. iptables命令 高级网络

    http://man.linuxde.net/iptables iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分.可以直接配置,也可以通过许多前端和图形界面配置. ...