一、选择好变量名的注意事项
1)命名注意事项
为变量命名时最重要的考虑事项是:该名字要完全、准确地描述出该变量所代码的事物。这种名字要很容易阅读,因为其中不包含晦涩的缩写,同时也没有歧义。下表给出了更多变量名称的例子,其中有好的也有差的。
2)以问题为导向
一个好记的名字反映的通常都是问题,而不是解决方案,表达是是what(什么)而不是how(如何),例如员工数据记录可以是inputRec或employeeData。在财务软件里,calcVal的计算痕迹要比sum更明显。
3)最适当的名字长度
当变量名的平均长度在10到16个字符的时候,调试程序所花费的力气是最小的。
4)变量名对作用域的影响
短的变量名会带来一些麻烦。对于全局命名空间中的名字加以限定词,例如用namespace关键字划分全局命名空间。
5)变量名中的计算值限定词
计算结果的变量:总额、平均值、最大值等。如果要用类似于Total、Sum、Average、Max、Min、Record、String、Pointer这样的限定词来修改某个名字,那么请把限定词加到名字的最后,可提高可读性,简化维护工作。
6)变量名中的常用对仗词
通过应用命名规则来提高对仗词使用的一致性,从而提高其可读性。下面是一些常用的对仗词:
二、为特定类型的数据命名
1)为循环下标命名
i、j和k是约定俗成的。如果一个变量要在循环之外使用,那么就需要一个更有意义的名字,类似于recordCount、teamIndex等。
2)为状态变量命名
为状态变量取一个比flag更好的名字,例如characterType = CONTROL_CHARACTER。
3)为临时变量命名
临时变量常被赋予temp、x或者其他一些模糊且缺乏描述性的名字。临时变量是一个信号,表明程序员还没有完全把问题弄清楚,程序员会倾向于比其他变量更为随意地对待这些变量,从而增加了出错的可能。
4)为布尔变量命名
谨记典型的布尔变量名:done、error、found、success或ok。给布尔变量赋予隐含“真/假”含义的名字。变量名加前缀“is”的优点是不能用于那些模糊不清的名字:isStatus,缺点是降低了简单逻辑表达式的可读性,isFound的可读性要略差于found。
5)为枚举类型命名
通过使用组前缀,如Color_、Planet_或者Month_来明确表示该类型的成员都同属于一个组。
6)为常量命名
根据常量所表示的含义,而不是该常量所具有的数组为该抽象事物命名。
三、标准前缀
1)用户自定义类型缩写
UDT缩写可以标识被命名对象或变量的数据类型,表示像窗体、屏幕区域以及字体一类的实体,通常不会表示任何由编程语言所提供的预制数据类型。
2)语义前缀
语义前缀比UDT更进一步,描述了变量或者对象是如何使用的。根据项目的不同而不同。
3)标准前缀的优点
标准前缀能够更精确地描述一些含义比较模糊的名字,例如min和max、first和last,并且使名字更加紧凑,例如可以用cpa而不是totalParagraphs表示段落总数,可以用ipa表示一个段落数组的下标,而不是用indexParagraphs或者paragraphsIndex。
四、创建具备可读性的短名字
1)缩写的一般指导原则
其中的一些原则彼此冲突,所以不要试图同时应用所有的原则。
2)有关缩写的评论
1. 不要用从每个单子中删除一个字符的方式来缩写。
2. 缩写要一致,要么全用Num,要么全用No。
3. 创建你能读出来的名字,用xPos而不用xPstn,用needsCompu而不用ndsCmptg。
4. 避免使用容易看错或读错的字符组合,为了表示b的结尾,endb要比bend更好。
5. 使用辞典来解决命名冲突,创建简短名字会带来一项麻烦就是命名冲突,用dismissed代替fired,3个字母的缩写变为dsm。
6. 在代码里用缩写对照表解释极短的名字的含义。
7. 在一份项目级的“标准缩写”文档中说明所有的缩写。
8. 名字对于代码读者的意义要比对作者更重要。
五、应该避免的名字
1. 避免使用令人误解的名字或缩写。
2. 避免使用具有相似含义的名字,例如input和inputValue在语义上非常相似。
3. 避免使用具有不同含义但却有相似名字的变量,例如clientRecs和clientReps这样的名字。
4. 避免使用发音相近的名字,例如wrap和rap。
5. 避免在名字中使用数字,例如file1和file2,如果数字很重要,那么用数组来代替一组单个的变量。
6. 避免在名字中拼错单词,例如把highlight错拼为hilite。
7. 避免使用英语中常常拼错的单词,例如absense、acummulate、calender等这些拼错的单词。
8. 不要紧靠大小写来区分变量名。
9. 避免使用多种自然语言,如果一个项目在多个说英语的国家进行,就应该以其中一种英语版本为标准。
10. 不要使用与变量含义完全无关的名字。
11. 避免在名字中包含易混淆的字符,例如数字1和字母l。