6. 命名
6.1. 命名的基本约定
要使用可以准确说明变量/字段/类的完整的英文描述符,如firstName。对一些作用显而易见的变量可以采用简单的命名,如在循环里的递增(减)变量就可以被命名为 “ i ”。
要尽量采用项目所涉及领域的术语。
要采用大小写混合,提高名字的可读性。为区分一个标识符中的多个单词,把标识符中的每个单词的首字母大写。不采用下划线作分隔字符的写法。有两种适合的书写方法,适应于不同类型的标识符:
PasalCasing:标识符的第一个单词的字母大写;
camelCasing:标识符的第一个单词的字母小写。
下表描述了不同类型标识符的大小写规则:
标识符 | 大小写 | 示例 |
命名空间 | Pascal | namespace Com.Techstar.ProductionCenter |
类型 | Pascal | public class DevsList |
接口 | Pascal | public interface ITableModel |
方法 | Pascal | public void UpdateData() |
属性 | Pascal | Public intLength{…} |
事件 | Pascal | public event EventHandler Changed; |
私有字段 | Camel | private string fieldName; |
非私有字段 | Pascal | public string FieldName; |
枚举值 | Pascal | FileMode{Append} |
参数 | Camel | public void UpdateData(string fieldName) |
局部变量 | Camel | string fieldName; |
避免使用缩写,如果一定要使用,就谨慎使用。同时,应该保留一个标准缩写的列表,并且在使用时保持一致。
对常见缩略词,两个字母的缩写要采用统一大小写的方式(示例:ioStream,getIOStream);多字母缩写采用首字母大写,其他字母小写的方式(示例:getHtmlTag);
避免使用长名字(最好不超过 15 个字母)。
避免使用相似或者仅在大小写上有区别的名字。
6.2. 各种标示符类型的命名约定
6.2.1. 程序集命名
公司域名(Techstar)+ 项目名称 + 模块名称(可选),例如:
中心系统程序集:Techstar.ProductionCenter;
中心系统业务逻辑程序集:Techstar.ProductionCenter.Business;
6.2.2. 命名空间命名
采用和程序集命名相同的方式:公司域名(Techstar)+ 项目名称 + 模块名称。另外,一般情况下建议命名空间和目录结构相同。例如:
中心系统:Techstar.ProductionCenter;
中心系统下的用户控件:Techstar.ProductionCenter.UserControl;
中心系统业务逻辑:Techstar.ProductionCenter.Business;
中心系统数据访问:Techstar.ProductionCenter.Data;
6.2.3. 类和接口命名
类的名字要用名词;
避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP。
接口的名字要以字母I开头。保证对接口的标准实现名字只相差一个“I”前缀,例如对IComponent的标准实现为Component;
泛型类型参数的命名:命名要为T或者以T开头的描述性名字,例如:
public class List<T>
public class MyClass<TSession>
´ 对同一项目的不同命名空间中的类,命名避免重复。避免引用时的冲突和混淆;
6.2.4. 方法命名
第一个单词一般是动词
如果方法返回一个成员变量的值,方法名一般为Get+成员变量名,如若返回的值 是bool变量,一般以Is作为前缀。另外,如果必要,考虑用属性来替代方法,具 体建议见10.1.2节;
如果方法修改一个成员变量的值,方法名一般为:Set + 成员变量名。同上,考虑 用属性来替代方法;
6.2.5. 变量命名
按照使用范围来分,我们代码中的变量的基本上有以下几种类型,类的公有变量;类的私有变量(受保护同公有);方法的参数变量;方法内部使用的局部变量。这些变量的命名规则基本相同,见标识符大小写对照表。区别如下:
i. 类的公有变量按通常的方式命名,无特殊要求;
ii. 类的私有变量采用两种方式均可:采用加“m”前缀,例如mWorkerName;
iii. 方法的参数变量采用camalString,例如workerName;
iv. 方法内部的局部变量采用camalString,例如workerName;
不要用_或&作为第一个字母;
尽量要使用短而且具有意义的单词;
单字符的变量名一般只用于生命期非常短暂的变量。i,j,k,m,n一般用于integer;c,d,e 一般用于characters;s用于string
如果变量是集合,则变量名要用复数。例如表格的行数,命名应为:RowsCount;
命名组件要采用匈牙利命名法,所有前缀均应遵循同一个组件名称缩写列表