最重要的命名注意事项
为变量命名时最重要的考虑事项是,该名字要完全、准确地描述出该变量所代表的事物。获得好名字的一种使用技巧就是用文字表达变量所表达的是什么。通常,对变量的描述就是最佳的变量名。这个名字很容易阅读,因为其中并不包含晦涩的缩写,同时也没有歧义。因为它是对该事物的完整描述,因此不会和其他事物混淆。另外,由于这一名字与所表达的概念相似,因此也很容易记忆。
以问题为向导
一个好记的名字反应的通常都是问题,而不是解决方案。一个好名字通常表达的是“什么”(what),而不是“如何”(how)。一般而言,如果一个名字反映了计算的某些方面而不是问题本身,那么它反映的就是“how”,而非“what”了。请避免选取这样的名字,而应该在名字中反映出问题的本身。
最适合的名字长度
当变量名的平均长度在10到16个字符的时候,调试程序所需要的气力是最小的。(或者8到20个字符。)这项原则并不意味着尽量把变量名控制在这个标准内,它强调的是,如果你查看自己的代码时,发现了很多更短的名字,那么你需要认真检查,确保这些名字含义足够清晰。
变量名对作用域的影响
较长的名字适合于很少用到的变量或者全局变量,而较短的名字则适合于局部变量或者循环变量。
变量名中的计算值限定词
很多的程序都有表示计算结果的变量:总额、平均值、最大值等等。如果要用类似于Total / Sum / Average / Max / Min / Record / String /Pointer这样的限定词来修改某个名字,那么请记住把限定词加到名字的最后。
变量名的常用对仗词
对仗词的使用要准确。通过应用命名规则来提高对仗词使用的一致性,从而提高其可读性。下面是一些常用的对仗词:
Begin/End
First/Last
Locked/Unlocked
Min/Max
Next/Previous
Old/New
Open/Closed
Up/Down
…………
核对表:
命名的一般注意事项:
名字完整并准确地表达了变量所代表的含义吗?
名字反映了现实世界的问题而不是变成语言方案吗?
名字足够长,可以让你无需苦苦思索吗?
如果有计算值限定符,它被放在名字的最后吗?
名字中有Count或者Index来代替Num吗?
为特定类型的数据命名:
循环下标的名字有意义吗(如果循环的长度超出一两行代码或者出现了嵌套循环,那么就应该是i,j,k以外的其他名字)?
所有的“临时”变量都重新命以更有意义的名字了吗?
当布尔变量的值为真时,变量名能准确表达其含义吗?
枚举类型的名字中含有能够表示其类别的前缀或者后缀了吗?
具名常量是根据它代表的抽象实体而不是她所代表的数字来命名的吗?
命名规则:
规则能够区分局部数据、类的数据和全局数据吗?
规则能够区分类型名、具名常量、枚举类型和变量名吗?
规则能够在编译器不强制检测只读参数的语言里表示出子程序中的输入参数吗?
规则尽可能地与巨岩的标准规则兼容吗?
名字为了可读性而加以格式化吗?
短名字:
代码用了长名字吗?(除非有必要使用短名字)
是够避免只为节省一个字符而缩写名字的情况?
所有的单词的缩写方式都一致吗?
名字能够读出来吗?
避免使用容易被看错或者读错的名字吗?
在缩写对照表里面对短名字做出说明吗?
常见的命名问题:你避免使用:
容易让人误解的名字
相近含义的名字
只有一两个字符不同的名字
发音相近的名字
包含数字的名字
为了缩短而故意拼错的名字
英语中经常拼错的名字
与标准子程序名或者预定义变量名冲突的名字
过于随意的名字
含有难度的字符的名字
昨天晚上看代码大全的“变量”一章节,本来想总结一下的。但是字字珠玑,发现总结不出什么东西,唯有照搬了,现今不过只发了这一点点提纲点的东西。后面的,看有时间没,有的话,再录进来。