选择好变量名的注意事项
一个好的变量名是可读的、易记得得和恰如其分的。
最重要的命名注意事项
最重要的考虑事项是,该名字要完全、准确地描述出该变量所代表的事物。通常,对变量的描述就是最佳的变量名。
以问题为导向
一个好记的名字反映的通常是问题,而不是解决方案。
最适当的名字长度
当变量名的平均长度在10到16个字符的时候,调试程序所需花费的力气是最小的。平均名字长度在8到20个字符的程序也容易调试。
变量名对作用域的影响
较长的名字适用于很少用到的变量或者全局变量,而较短的名字则适用于局部变量或者循环变量。对于全局命名空间中的名字加限定词。
变量名中的计算值限定词
很多程序都有表示计算结果的变量:总额、平均值、最大值、等等。如果你要用类似于Total、Sum、Average、Max、Min、Record、String、Pointer这样的限定词来修改某个名字,那么请记住把限定词加到名字的最后。
变量名中的常用对仗词
通过应用命名规则来提高对仗词使用的一致性,常用的对仗词:
- begin/end
- first/last
- locked/unlocked
- min/max
- next/previous
- old/new
- opened/closed
- visible/invisible
- source/target
- up/down
为特定类型的数据命名
本节将讲述与循环变量、状态变量、临时变量、布尔变量、枚举类型和具名常量有关的考虑事项。
- 为循环下标命名;
- 为状态变量命名;
- 为临时变量命名;
- 为布尔变量命名;
- 为枚举类型命名;
- 为常量命名;
命名规则的力量
本节讲述为什么、何时以及如何创建自己的变量命名标准。
为什么要有规则
命名规则可以带来如下好处:
- 要求你更多地按规矩办事;
- 有助于在项目之间传递知识;
- 有助于你在新项目中更快速地学习代码;
- 有助于减少名字增生;
- 弥补编程语言的不足之处;
- 强调相关变量之间的关系。
何时采用命名规则
- 当多个程序员合作开发一个项目时;
- 当你计划把一个程序转交给另一位程序员来修改和维护的时候;
- 当你在组织中的其他程序员评估你写的程序的时候;
- 当你写的程序规模太大,以至于你无法在脑海里同时了解事情的全貌,而必须分而治之的时候;
- 当你写的程序生命周期足够长,长到你可能会在把它搁置几个星期或几个月之后又重新启动有关程序的工作时;
- 当你在一个项目中存在一些不常见的的术语,并且希望在编写代码阶段使用标准的数据或者缩写的时候。
正式程序
通常,你所需的正式程度取决于为同一程序而工作的人员数量、程序的规模,以及程序预期的声明期。
非正式命名规则
大多数项目采用的都是类似于本节所讲的相对非正式的命名规则。
与语言无关的命名规则的指导原则
- 区分变量名和子程序名字:本书所采用的命名规则要求变量名和对象名以小写字母开始,子程序名字以大写字母开始。
- 区分类和对象:
- 通过大写字母开头区分类型和变量;
- 通过全部大写区分类型和变量;
- 通过给类型加”t_“前缀区分类型和变量;
- 通过给变量加”a“前缀区分类型和变量;
- 通过对变量采用更明确的名字区分类型和变量。
- 标识全局变量:g_
- 标识成员变量:m_
- 标识类型声明:t_
- 标识具名常量:c_
- 标识枚举类型的元素:e_
与语言相关的命名规则的指导原则
C的命名规则
- c和ch是字符变量;
- i和j是整数下标;
- n表示某物的数量;
- p是指针;
- s是字符串;
- 预处理宏全部大写;
- 变量名和子程序名全部小写;
- 下划线用作分隔符。
混合语言编程的注意事项
在混合语言环境中编程时,可以对命名规则做出优化以提高整体的一致性和可读性。
标准前缀
- 用户自定关于类型缩写
- 语义前缀
- 标准前缀的优点
- 标准前缀能够更为精确地描述一些含义比较模糊的名字;
- 标准化前缀是名字更加紧凑;
- 标准前缀能帮助你准确地最类型做出判断。
创建具备可读性的短名字
缩写的一般指导原则
下面是几项创建缩写的指导原则:
- 使用标准的缩写;
- 去掉所有的非前置元音;
- 去掉虚词;
- 使用每一个单词的第一个或前几个字符、母;
- 统一地在每个单词的第一、第二或者第三个字母后截断;
- 保留每个单词的第一个和最后一个字母;
- 使用名字中每一个重要单词,最多不超多三个;
- 去除无用的后缀;
- 确保每一个音节中最引人注意的发音;
- 确保不要改变变量的含义;
- 反复使用上述技术,直到你把每个变量名的长度缩减到8到20个字符。
有关缩写的评论
- 不要从每个单词中删除一个字符的方式来缩写;
- 缩写要一致;
- 创建你能读出来的名字;
- 避免使用容易看错或者读错的字符组合;
- 使用词典来解决命名冲突;
- 在一份项目级的”标准缩写“文档中说明所有的缩写;
- 记住,名字对于代码读者的意义要比对作者更重要。
应该避免的名字
下面就哪些变量名应该避免给出指导原则:
- 避免使用令人误解的名字或缩写;
- 避免使用具有相似含义的名字;
- 避免使用具有不同含义却具有相似名字的变量;
- 避免使用发音相近的名字;
- 避免在名字中使用数字;
- 避免在名字中拼错单词;
- 不要仅靠大小写来区分变量名;
- 避免使用多种自然语言;
- 避免使用标准类型、变量和子程序的名字;
- 不要使用与变量含义完全无关的名字;
- 避免在名字中包含易混淆的字符。
核对表:变量命名
命名的一般注意事项
- [ ] 名字完整并准确表达了变量所代表的含义了吗?
- [ ] 名字反映了现实世界的问题而不是编程语言方案吗?
- [ ] 名字足够长,可以让你无需苦苦思索吗?
- [ ] 如果有计算值限定符,它被放在了名字的最后吗?
- [ ] 名字中用Count或者Index来代替Num了吗?
为特定类型的数据命名
- [ ] 循环下标的名字有意义吗?
- [ ] 所有的”临时“变量都重新命以更有意义的名字了吗?
- [ ] 当布尔变量的值为真时,变量名能准确表达其含义吗?
- [ ] 枚举类型的名字中含有能够表示其类别的前缀或者后缀了吗?
- [ ] 具名长了是根据它所代表的抽象实体而不是它所代表的数字来命名的吗?
命名规则
- [ ] 规则能够区分局部数据、类的数据和全局数据吗?
- [ ] 规则能够区分类型名、具名常量、枚举类型和变量名吗?
- [ ] 规则能够在编译器不强制检测只读参数的语言里标识出子程序中的输入参数吗?
- [ ] 规则尽可能地与语言的标准规则兼容吗?
- [ ] 名字为了可读性而加以格式化吗?
短名字
- [ ] 代码使用了长名字吗?
- [ ] 是否避免只为了省一个字符而缩写名字的情况?
- [ ] 所有单词的缩写方式都一致吗?
- [ ] 名字能够读出来吗?
- [ ] 避免使用容易被看错或者读错的名字吗?
- [ ] 在缩写对照里对短名字做出说明了吗?
要点
- 好的变量名是提高程序可读性的一项关键要素;
- 名字要尽可能地具体;
- 命名规则应该能够区分局部数据、类数据和全局数据;
- 无论做哪种类型项目,你都应该采用某种变量命名规则;
- 现代编程语言很少要用到缩写;
- 代码阅读的次数远远多于编写的次数。