代码大全2——第11章学习记录
命名注意事项
- 名字要完全、准确地描述出该变量所代表的事物
- 不包含晦涩的缩写,同时也没有歧义
- 名字应当反映问题,而不是解决方案
最适当的名字长度
平均名字长度控制在合理范围中,建议为(8到20之间)
变量名对作用域的影响
较长的名字适用于很少用到的变量或者全局变量
较短的名字则是用于局部变量或循环变量
对位于全局命名空间中的名字加以限定词
变量名中的计算值限定词
在表示计算结果的变量:总额、平均值、最大值,等等。将MAX之类的限定词加在变量名的最后修饰它,例如:grademax
将计算结果的修饰词统一放在变量名之后,保证一致性
例外
NUM放在变量名的开始位置代表一个总数:numCustomers表示员工的总数
NUM放在变量名的结束位置代表一个下标:customerNum表示当前员工的序号
变量名中的常用对仗词
为循环下标命名
一般约定俗称的循环变量名为i,j,k,在较简单的循环变量中可以使用,其他情况禁止使用
当一个变量在循环之外使用,就需要取一个更有意义的名字
在复杂的循环之中(例如嵌套的循环),应当给循环变量富裕更长得到名字以提高可读性
为状态变量命名
状态变量用于描述程序的状态
状态变量不要标记为flag
应用枚举类型、具名常量或用作具名常量的全局变量来对其赋值,而且其值应该与上面这些量做比较。
为临时变量命名
用于存储计算的中间结果,作为临时占位符,以及存储内务管理值
不要使用temp之类语义不明的名字
为布尔变量命名
- done 表示某件事情已经完成,事情完成之前为false,完成之后为true
- error 表示有错误发生,在错误发生之前设置为false,发生时设为true
- found 表示某个值已经找到,未找到的设为false,找到的设为true
- success或ok 表明一项操作是否成功。操作失败为false,成功为true(推荐使用更具体的名字代替success)
- status表示布尔变量是糟糕的,应根据具体情况命名为例如(statusOK)之类的
- 不要在布尔变量名前加上is,会导致可读性下降
- 不要在布尔变量名前加上not,用肯定的语气而非否定,否定降低可读性
为枚举类型命名
枚举类型成员不必冠以枚举名前缀,调用时使用前缀.成员名
为常量命名
根据该常量所表示的含义而不是该常量所具有的数值为该抽象事物命名
标准前缀
用户自定义(UDT)类型缩写
被用于表示像窗体、屏幕区域以及字体一类的实体
语义前缀
具体根据项目的不同而不同
一般缩写的指导规则
- 使用标准的缩写(列在字典中的那些常见缩写)
- 去掉所有非前置元音(computer变成cmptr,screen变成scrn。。。)
- 去掉虚词and,or,the等
- 使用每个单词的第一个或前几个字母
- 统一地在每个单词的第一、第二或者第三个(选择最合适的一个)字母后截断
- 保留每个单词的第一个和最后一个字母
- 使用名字中的每一个重要单词,最多不超过三个
- 去除无用的后缀——ing,ed等
- 保留每个音节中最引人注意的发音
- 确保不要改变变量的含义
- 反复使用上述技术,直到变量名的长度减到7到20个字符或者达到你所用的编程语言对变量名的限制字符数
- 缩写要一致,例如number的缩写要么统一使用num要么统一使用no
应该避免的名称
- 避免使用令人误解的名字或缩写
- 避免使用具有相似含义的名字
- 避免使用具有不同含义但却有相似名字的变量
- 避免使用发音很相近的名字
- 避免在名字中使用数字
- 避免在名字中拼错单词
- 避免在名字中拼错单词
- 避免使用英语中常常拼错的单词
- 不要仅靠大小写来区分变量名
- 避免使用多种自然语言
- 避免使用标准类型、变量和子程序的名字
- 不要使用与变量含义完全无关的名字
- 避免在名字中包含易混淆的字符
感悟
被负责人指出问题后开始静心学习编码规范,争取摘掉不合格代码的帽子,在之前编码中我喜欢把计算值限定词放在前面,喜欢使用flag表示状态变量,这些都是不符合规范的。