变量名的力量
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 就很难区分。
如何才能称为好的变量呢?好的变量应该有如下两个特征:
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 就很难区分。
相关文章推荐
- 事实证明,阿里和京东分别推动了商业文明的进步和倒退
- iOS--C语言指针
- unity, editable mesh
- linux下给PHP安装GD库扩展
- CTO之nginx在ubuntu下删除记录
- Java父子继承实例的内存控制
- IE如何兼容placeholder属性
- IETF工作组快照
- listbox
- 参数传递二维数组
- ssoj2461富可敌国
- Java匿名内部类
- 升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错(引用他人的)
- 算法中涉及的专业英语
- code first网站发布后数据表中没有数据问题
- uvaoj 10859 - Placing Lampposts
- 设置Tomcat的UTF-8编码
- Xendesktop5连接vmware VCSA6.0报错及VCSA6.0更换证书问题
- Family planning
- 树莓派Ekho实现中文语音合成