变量的一般命名原则
变量命名 | 说明 |
---|---|
好的变量名 | 可读的、易记的、易理解的、恰如其分的 |
以问题为导向 | 好名字通常表达的是What,而不是How |
最适当的名字长度 | 8-20个字符 |
很短的变量名 | 代表临时数据,作用域有限 |
对位于全局命名空间的名字加以限定词 | uiEmployee、dbEmployee |
Total、Sum、Average、Max、Min、Record、String、Pointer | 计算值限定词加到名字的最后 |
num计算值限定词约定俗成,但常常会带来麻烦 | numCustomers:顾客总数 customerNum:某个特定顾客 |
Count或Total表达总数,Index指代某个特定值,代替num | customerCount:顾客总数 customerIndex:某个特定顾客 |
常用对仗词 | begin/end、first/last、locked/unlocked min/max、next/previous、old/new opened/closed、visible/invisible、up/down source/target、source/destination |
为循环下标命名 | i、j、k:仅用于简单循环的循环下标 循环外,应该取一个比i、j、k更有意义的名字 循环的嵌套,i、j、k容易导致下标串话 |
为状态变量命名 | 枚举类型、具名常量、用作具名常量的全局变量 |
为临时变量命名 | temp、x等模糊且缺乏描述性 请使用准确且具有描述性的变量民 |
为布尔变量命名 | 典型的布尔变量名:done、error、found、success、ok |
为枚举类型命名 | 组前缀:明确表示该类型成员同属一个组 Public Enum e_Color Color_Red Color_Green Color_Bule End Num |
为常量命名 | 根据常量所表示含义命名,而非数值 |
区分变量名和子程序名 | 变量、对象名以小写字母开头:variableName 子程序名以大写字母开头:RoutineName() |
区分类和对象或者类型和该类型变量 | 大写字母开头:Widget widget; 全部大写:WIDGET widget; 类型加t_前缀:t_Widget widget; 变量加a前缀:Widget aWidget; 明确的名字:Widget employeeWidget; |
标识全局变量 | g_前缀 |
标识成员变量 | m_前缀 |
标识类型声明 | 类型名全部大写,适用于typedef和struct,不适用于类名,类名可以选择加t_前缀,如t_Color |
标识具名常量 | 常量名增加c_前缀:c_LinesPerPageMax 全部大写:LINES_PER_PAGE_MAX |
标识枚举类型元素 | 全部大写 类型名增加e_或E_前缀,同时成员名增加特定类型的前缀如Color_ |
在不能保证输入参数只读的语言里标识只读参数 | C++中使用*、&和const指名 |
格式化命名提高可读性 | 大小写和分隔符,尽量不要混用 |
C命名规则 | c和ch是字符变量 i和j是整数下标 n表示某物的数量 p是指针 预处理宏全部大写,包括typedef 变量名和子程序名全部小写 下划线用作分隔符 |
C++命名规则 | i和j是整数下标 p是指针 常量、typedef和预处理宏全部大写 类和其他类型的名字混合大小写 变量名和函数名第一个单词小写,后续每个单词首字母大写 除全部大写的名字之外,不使用下划线作为分隔符 |
Java命名规则 | i和j是整数下标 常量全部大写并用下划线隔开 访问器子程序使用get和set前缀 类名和接口名中每一个单词的首字母大写 除用于全部大写的名字之外,不使用下划线作为分隔符 变量名你和方法名中的第一个单词首字母小写,后续单词首字母大写 |
缩写的一般指导原则 | 去掉所有非前置元音:computer-cmptr,apple-appl 去掉虚词and、or、the等 保留每个单词的第一个和最后一个字母 去除无用的后缀:ing、ed等 使用名字中的每一个重要单词,最多不超过3个 保留每个音节中最引人注意的发音 使用每个单词的第一个或前几个字母 确保不要改变变量的含义 反复使用上述计数,知道变量名长度缩减到8-20个字符 |