您的位置:首页 > 其它

变量名的力量

2015-10-28 20:30 148 查看
曾经在网上看到的一句话:“一个好的程序员往往不需要添加过多的注释,因为他编写的代码就是注释。“一个好的变量名是可读的,易记的和恰如其分的。

如何才能称为好的变量呢?好的变量应该有如下两个特征:

1、容易理解

2、长度在8到20个字符之间。

例如:currentDate和todaysDate就很准确地表达了”当前日期“这一时间概念,而cd或者current这样的变量名就很难让人理解。x、x1、x2这些永远都是坏名字,传统上x是用来表示一个未知量的,如果你不希望你的变量是一个未知量,尽量取一个好一点的名字吧!

很多程序都有表示计算结果的变量:总额、平均值等。如果要用到这样的 限定词如total、sum等,请记得将限定词加到名字最后,这样,变量名中最重要的那部分,能够被最先阅读到,如revenueTotal(总收入)、expenseTotal(总支出)等。但是也有例外,那就是num限定词的位置已经是约定俗成的,num放在变量名开始位置表示一个总数,如

numCustomer表示顾客总数,customerNum表示顾客序号。为了不引起误解,用customerCount代表顾客总数,customerIndex代表顾客序号就更容易理解一些。

变量名中常用对仗词就很容易让人记忆。如begin/end、first/last、lock/unlock、min/max、next/previous、old/new、opened/closed、visible/invisible、source/target、

up/down等。

循环中的变量很多都是约定俗成的,如i、j、k这样的变量一般都是循环内的下标变量,如果一个变量要在循环外使用,那就应该取一个更有意义的名字。

布尔类型的变量也有一定的技巧,如done表示某件事已经完成,完成之前为false,完成之后为true,类似的还有error、found、success、ok。有些程序员喜欢在布尔类型的变量前加is,但是if(isFound)的可读性就不如is(found)好。

关于变量命名的规范,很多语言也有一定的命名规则。

C++的命名规则:

① i和j是整数的下标

② p是指针

③ 常量typedef和预处理宏全部大写

④ 类和其他类型的名字混合大小写

⑤ 变量名和函数名中的第一个单词小写,后续每个单词的首字母大写,如variableOrRoutineName

⑥ 不把下画线用作名字中的分割符,除非用于全部大写的名字以及特定的前缀中

JAVA的命名规则:

① i和j是整数的下标

② 常量全部大写

③ 变量名和函数名中的第一个单词小写,后续每个单词的首字母大写,如variableOrRoutineName

④ 类名首字母和其他单词首字母大写

⑤ 访问子程序使用get和set前缀

有时候变量名太长需要缩写,缩写的一般规则为:

① 使用标准缩写(在字典中常见的缩写)

② 去掉所有非前置元音,如:computer变为cmptr,screen变成scrn,apple变成appl。

③ 去掉虚词如and,or,the等。

④ 使用每个单词的第一个或前几个。

⑤ 保留每个单词第一个和最后一个字母

⑥ 去掉无用后缀,如ing、ed等

缩写过程中应该注意的有:

① 不要用从每个单词中删除一个字符的方式缩写

② 缩写要一致,要么全用No,要么全用Num,不要两者一起用

③ 创建的变量要能读出来,如用xPos而不用xPstn

④ 永远记住,名字对于代码阅读者的意义远比作者更重要

现在说说代码中应该避免的名字:

① 避免使用令人误解的名字或缩写,如Fig and Almond Season缩写成FALSE,会让人误解成false的大写

② 避免使用具有相信含义的名字,如果两个变量名字交换都不会妨碍对程序的理解,那么就该考虑重新命名了。如input和inputvalue两个一起使用

③ 避免使用具有不同含义却有相似名字的变量,如clientRecs和clientReps,它们之间只有一个字母的差异,一不留神就会出错

④ 避免在名字中使用数字,如total1、total2、total3等,如果名字中的数字真的非常重要,请考虑用数组来代替一组单个变量

⑤ 避免在名字中拼错单词,如absense,absend等。

⑥ 避免仅靠大小写来区分变量名,如student,STUDENT。

⑦ 避免使用与变量含义完成无关的名字,如margared和pookie,或者亲戚女朋友的名字。

⑧ 避免在名字中含有易混淆的字符,如1和 l 就很难区分。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: