命名规范制定意义
1. 方便代码的交流和维护,便于日后自己的再次阅读。
2. 不影响编码的效率,不与大众习惯冲突。
3. 使代码更美观、阅读更方便。
4. 使代码的逻辑更清晰、更易于理解。
名词解释
Pascal:帕斯卡命名,每个单词第一个字母大写
Camel :驼峰命名,第一个单词字母小写,其余单词第一个大写
总结表:
标识符 | 大小写 | 样例 | 说明 |
命名空间 | Pascal | namespace System.Security { } | 用有意义的名字命名 namespace,如:产品名、公司名 |
类 | Pascal | public class StreamReader { } | 使用名词、名词短语命名 |
接口 | Pascal | public interface IEnumerable { } | 以 I 开始,后面加上名词、名词短语、形容词命名。 |
字段 ( 私有、保护 ) | Camel | private string userName; | 第一个单词小写,后面连接的单词首字母大写 |
字段 ( 公共、静态 ) | Pascal | public static readonly string UserId ; |
|
属性 | Pascal | private int length; public int Length { get; } | 字段private且小写,然后属性public大写 |
枚举 | Pascal | enum FileMode { Append, } |
|
事件 | Pascal | public event EventHandler Exited ; |
|
方法 | Pascal | public string ToString (); |
一般将其命名为动宾短语, “动词+对象 ”.
|
参数 | Camel | public static int ToInt32(string userId ); |
|
基础数据类型命名
数据类型 | 标准命名举例 |
array | arrShoppingList |
bool | isPostBack |
string | strFirstName |
int | intId |
DateTime | dtmStartDate |
object | objDog |
上面是常用的数据类型
注意事项:
序号 | 说明 | 示例 |
1 | 除约定俗成的,别用缩写。用 name, address, salary 等代替 nam, addr, sal |
|
2 | 除用于循环,别使用单个字母的变量象 i, n, x 等. 而要使用 index, temp 等 | for ( int index = 0; index < count; index++ ){ ...} |
3 | 自定义的异常以 Exception结尾 | public class AppException : Exception |
4 | 代码的缩进 .要用 Tab,而不要用 space. |
|
5 | 所有的类成员变量应该被声明在类的顶部,并用一个空行把它们和方法以及属性的声明区分开 |
|
6 | 建议局部变量在最接近使用它时再声明 . |
|
7 | 文件名要能反应类的内容,最好是和类同名,一个文件中一个类或一组关连类 |
|
8 | 大括号 "{"要新起一行 |
|
9 | 单独方法要加注释 | /// <summary> /// 根据id获得姓名 /// </summary> /// <param name="id">检索的id</param> /// <returns></returns> public string GetName(int id) { return "xiaomi"; } |
10 | 不要对字段名或静态字段名应用前缀。 具体说来, 不要对字段名称应用前缀来区分静态和非静态字段。 | 例如,应用 g_ 或 s_ 前缀是不正确的。 |
11 | 避免容易被主观解释的难懂的名称 | 方法名 AnalyzeThis() ,或者属性名 xxK8。这样的名称会导致多义性。 |
12 | 在类属性的名称中包含类名是多余的 | 如 Book.BookTitle 。而是应该使用 Book.Title |
13 | 只要合适,在变量名的末尾或开头加计算限定符 | ( Avg、Sum、Min、Max、Index ) |
14 | 在变量名中使用互补对 | 如 min/max 、begin/end 和 open/close |
15 | 布尔变量名应该包含 Is ,这意味着 Yes/No 或 True/False 值 | fileIsFound |
16 | 在命名状态变量时,避免使用诸如 Flag 的术语。状态变量不同于布尔变量的地方是它可以具有两个以上的可能值 | 不是使 用 documentFlag ,而是使用更具描述性的名称,如 documentFormatType 。 (此项只供参考) |
17 | 用于事件处理的委托添加 “EventHandler ”后缀 | public delegate void MouseEventHandler(object sender, MouseEventArgs e); |
18 | 用于事件处理之外的那些委托添加 “Callback ”后缀 |
|
19 | 不要给委托添加 “Delegate ”后缀 |
|
|
|
|