《代码大全》之变量名的力量
一,选择好变量名的注意事项
一个好的变量名是可读的、易记的和恰如其分的。可以通过应用多条原则来实现这些目标。
1,最重要的命名注意事项
为变量命名时最重要的考虑事项是,该名字要完全、准确地描述出该变量所代表的事物。获得好名字的一种使用技巧是用文字表达变量所代表的是什么。
2,以问题为导向
一个好名字通常表达的是“什么”,而不是“如何”。
3,最适当的名字长度
平均名字长度在 8 到 20 个字符的程序容易调试。当然这并不意味着你应该尽量把变量名控制到这个范围。它强调的是,如果你查看自己写的代码时发现了很多更短的名字,那么你需要认真检查,确保这些名字含义足够清晰。
4,变量名对作用域的影响
较长的名字适用于很少用到的变量或者全局变量,而较短的名字则适用于局部变量或者循环变量。
对位于全局命名空间中的名字加以限定词。
5,变量名中的计算值限定词
很多程序都有表示计算结果的变量:总额、平均值、最大值等等。如果你要用类似于 Total、sum、Average 这样的的限定词来修改某个名字,那么请记住把限定词加到名字的最后。
规则的例外是 num。numCustomers 表示员工总数,customerNum 表示当前员工的序号。当然最好使用 Count 或 Total 来代表员工的总数,用 Index 来指代某个特定的员工——以避开 num 的例外。
6,变量名中的常用对仗词
- begin/end
- first/last
- locked/unlocked
- min/max
- next/previous
- old/new
- opened/closed
- visible/invisible
- source/target
- source/destination
- up/down
二,为特定类型的数据命名
1,为循环下标命名
简单的循环内变量为 i,j,k,这是约定俗成的。
当你要在循环之外继续使用该变量,或者在嵌套循环中使用,或者循环体比较长,你就得为变量取个有意义的名字。
2,为状态变量命名
为状态变量取一个比 flag 更好的名字。标记应该用枚举类型、具名常量,或用作具名常量的全局变量来对其赋值。
3,为临时变量命名
临时变量常被赋予 temp、x 或其他一些模糊且缺乏描述性的名字。用真正的变量代替临时变量。
4,为布尔变量命名
谨记典型的布尔变量名:
- done 用 done 表示某件事情已经完成。在完成事情之前把 done 设为 false,在完成后设为 true。
- error 用 error 表示有错误发生。在错误发生之前把变量值设为 false.
- found 用 found 来表明某个值已经找到了。在一个数组中查找某个值,在文件中搜寻某员工的 ID 等都可以使用。
- success 或 ok 用该变量来表明一项操作是否成功。
给布尔变量赋予隐含“真/假”含义的名字。类似 done 或 success,其状态要么是 true,要么是 false。
使用肯定的布尔变量名。不要用例如 notFound 之类的。
5,为枚举类型命名
在某些编程语言中,枚举类型的处理很像类(如 Java),比如 Color.red,那么这里的命名直接取就好。倘若不是,则将 red 变为 Color_red 以表明成员来自同一个组。
6,为常量命名
在具名常量时,应该根据该常量所表示的含义,而不是该常量所具有的数值为该抽象事务命名。
三,命名规则的力量
一些解释,略。。
四,非正式命名规则
1,与语言无关的命名规则
- 区分变量名和子程序名字
- 区分类和对象
- 标识全局变量 如,有些时候在全局变量前加 g_ 前缀。
- 标识成员变量
- 标识类型声明
- 标识具名常量
- 标识枚举类型的元素
- 在不能保证输入参数只读的语言里标识只读参数
- 格式化命名以提高可读性
2,与语言相关的命名规则
C 的命名规则
- c 和 ch 是字符变量
- i 和 j 是整数下标
- n 表示某物的数量
- p 是指针
- s 是字符串
- 预处理宏全部大写(ALL_CAPS)
- 变量名和子程序全部小写(all_lowercase)
- 下划线(_)用作分隔符:letters_in_lowercase 比 lettersinlowercase 更具可读性。
c++ 的命名规则
- i 和 j 是整数下标
- p 是指针
- 常量和预处理宏全部大写(ALL_CAPS)
- 类和其它类型的名字混合大小写
- 变量名和函数名中的第一个单词小写,后续每个单词的首字母大写
- 不把下划线用作名字的分隔符,除非用于全部大写的名字以及特定的前缀中
Java 的规则
- i 和 j 是整数下标
- 常量全部大写并用下划线分隔
- 类名和接口名中每一个单词的首字母均大写,包括第一个单词
- 变量名和方法名中第一个单词的首字母小写,后续单词的首字母大写
- 除用于全部大写的名字之外,不使用下划线作为名字中的分隔符
- 访问器子程序使用 get 和 set 前缀
五,标准前缀
阅读即可
六,创建具备可读性的短名字
与项目保持一致即可
七,应该避免的名字
- 避免使用令人误解的名字或缩写
- 避免使用具有相似含义的名字
- 避免使用具有不同含义但却有相似名字的变量
- 避免使用发音相近的名字
- 避免在名字中使用数字
- 避免在名字中拼错单词
- 避免使用英语中尝尝拼错的单词
- 不要仅靠大小写来区分变量名