说到变量命名,先看下面的代码
int a=0;
int b=0;
int c=0;
=========================
int count=0;
int index=0;
int sum=0;
如果在项目中,你更愿意看到哪些命名的变量?
代码是给人看的,不是给机器看的
代码不是给机器看的,更重要的是给人看的,更重要的是代码要让除了你之外的人能看懂,而不是只是你自己能看懂就可以。好的命名,可以直接了当的表达其作用和用途,更容易让人理解。
曾经我就接收了一份别人的JavaScript的程序代码,功能运行没什么毛病,也实现了效果,但看到代码的那一刻我就彻底傻眼了,几乎所有的变量命名都是a1,af,af1,bj,这样的,要么是字母,要么是中文首字母缩写,再加上很多地方也变量声明都没有,再加上JavaScript本身就很难得知变量的类型,看这个代码我感觉我的短寿十年,然后我就跑路了,谁爱来谁来吧!
选择好的变量名的注意事项
命名这个问题,不管是在哪一门编程语言中,都是极其重要的,不管是变量,函数,对象,准确的命名都在一定程度上让你的程序走的更远,而不是早早夭折。
变量的命名不可以过于随意,它不像我们养的宠物,只要我们喜欢,叫它什么都可以,对于宠物来说,名称只是一个代号,并不会影响宠物本身的属性,但是变量不行,变量的名称不能只是单单的代号,它的代表变量本身,就像你不会在介绍自己加宠物狗的时候把它称之为猫一样。
最重要的注意事项
为变量命名时最重要的考虑事项:能够完全的、准确的描述该变量所代表的事物。
通常,对变量的描述就是这个变量的最佳变量名,这样的名称容易阅读,没有歧义,因为它是对该事务的完整描述,所以不会和其它事物混淆。又因为这个名字和所表达的概念相似,也很容易被记忆。
比如说:
到期的支票累计额,好的名字:runningTotal,坏的名字:dqTotal;
用户名,好的名字:username,坏的名字:yhm;
当前日期,好的名字:currentDate,坏的名字:date。
名字应该尽量明确,而不是像x,y,element、temp、i这样可以泛泛得可以用于多种目的,她们并没有像应该得那样提供足够得信息,因此通常都是命名上的败笔。(注意,这里说的是通常,并不是说一定噢)
以问题为导向
一个好记得名字反映得通常都是问题,而不是解决方案。一个好名字通常表达的是“什么”,而不是“如何”。一般而言,如果一个名字反映了计算的某些方面而不是问题本身,那么它反映的就是“如何”,而不是“什么”了,请避免选取这样的名字,而应该在名字中反映出问题本身。
最适当的名字长度
名字不能太长,会使得程序的视觉变得模糊不清,不能为了简短长度而可以采用缩写,不恰当的缩写也会导致无法正确表达和让人理解其用途,缩写应该采用众所周知的,约定熟成的缩写。
除了上诉的注意事项以外,还有:
- 作用域对变量名的影响(不同作用域相交情况下出现相同变量名,因该在其名字上区分作用域)
- 变量名中的计算值限定词(计算限定词应该加到名字的最后)
- 变量名中的常用对仗词(对仗词的使用要准确,能够提高可读性)
书中还对特定类型的数据命名给出了建议,有兴趣的小伙伴建议阅读原文(264-270页)
创建具备可读性的短名字
这个应该是实际编程中经常会遇到的问题,很多程序员应该都为这个名字太长而苦恼过,于是就出现了各种各样的缩写,我见过最多的就是直接使用拼音缩写的,也不能否定有些情况拼音的缩写确实对我们来说更合适。
缩写的一般指导原则
- 使用标准的缩写(列在字典中的那些常用缩写)。
- 去掉所有非前置元音(computer变成cmptr,screen变成scrn,apple变成appl,integer变成intgr)
- 去掉虚词and,or,the等。
- 使用每个单词的第一个或前几个字母。
- 统一的在每个单词的第一、第二或者第三个字母后截断。
- 保留每个单词的第一个和最后一个字母。
- 使用名字中的每一个重要单词,最多不超过三个。
- 去除无用的后缀,比如ing,ed等
- 保留每个音节中最引人注意的发音
10.确保不要改变变量的含义。
反复使用上诉技术,直到你把每个变量名的长度缩减到8到20个字符,或者达到你所用的编程语言对变量名的限制字数。(不要为了缩写而缩写,刻意的缩写会让其无法理解,有时候,长一点没关系的,没关系的)
应该避免的名字
- 避免使用令人误解的名字或缩写
- 避免使用具有相似含义的名字
- 避免使用具有不同含义但却有相似名字的变量
- 避免使用发音相近的名字
- 避免在名字中使用数字
- 避免子啊名字中使用拼错单词
- 避免使用英语中常常拼错的单词
- 不要仅靠大小写来区分变量名
- 避免使用多种自然语言(这也是不建议使用拼音命名变量名的原因,因为程序中的命名几乎都是用英语,你无法确定别人看到这个命名时是否知晓该 命名时拼音还是英语)
- 避免使用标准类型、变量和子程序的名字
- 不要使用与变量含义完全无关的名字
- 避免在名字中包含易混淆的字符
注意其中避免和不要的区别噢
要点
- 好的变量名时提高程序可读性的一项关键要素。对特殊种类的变量,比如循环下标和状态变量,需要加以特殊的考虑。
- 名字要尽可能的具体。那些太模糊或者太通用以致于能够用于多种目的的名称通常都是很不好的。
- 现代编程语言很少需要用到缩写。如果你真的要使用缩写,请使用项目缩写字典或者标准前缀来帮助理解缩写。
- 代码阅读的次数远远多于编写的次数。确保你所取的名字更侧重于阅读方便而不是编写方便。