代码大全

代码大全学习笔记

从低级学生开始学起

代码大全

变量名的力量

选择好变量名的注意事项

你不可能像给狗起名字那样给变量命名-仅仅因为它很可爱或者听上去不错,狗和狗的名字不一样,他们是不同的东西,变量名和变量名就本质而言,却是同一事物,这样一来,变量的好坏就在很大程度上取决于它的命名好坏,所以在给变量命名的时候需要小心翼翼。

为变量命名时候最重要的考虑事项是,该名字要完全、准确的描述出该变量所代表的事物,获得好的名字的一种技巧就是用文字表达变量所代表的是什么,通常,对变量名的描述就是最佳的变量名,这种名字很容易阅读,因为其中不包含晦涩的缩写,也没有歧义,因为它是对该事物的完整描述,因此不会和其他事物混淆,另外,由于这一名字与所表达的概念相似,因此也很容易记忆。

以问题为导向

一个好记的名字反应的通常都是问题,而不是解决方案,一个好名字通常表达什么而不是如何,一般而言,如果一个名字反映了计算机某些方面,而不是问题本身,那么它反映的就是how而不是whta

最适当的名字长度

经过研究发现当变量名平均在 10-16 个字符的时候调试所花费力气是最小的(1990),平均长度在 8-20 个字符的也几乎同样容易调试,这项原则并不意味着你应该尽量吧变量名控制在 9-16 个字符,它强调,如果你检查自己代码发现很多更短的名字,那么你需要认真检查,确保这些名字含义足够清晰。

作用域对变量名的影响

当一个变量名很短的时候,如 i ,这个长度本身就对变量名做出了说明,就是说,这个变量代表的是一个临时数据,他的作用域非常有限,阅读该变量应该明白,这个变量只会用于几行代码之内,研究表明,较长的名字适合用于很少用到的变量或者全局变量,而较短的名字则适合用于局部变量或者循环变量,不过短的边淋感冒常常会带来一些麻烦,因此作为一项防御式编程策略,一些人会避免使用短的变量名。

变量名中的计算值限定词

很多程序都有表示计算结果的变量:总额、平均值、最大值、等等,如果要用类似于 Total、Sum、Average、Max、Record、String、Pointer 这样的限定词来修改某个名字,那么请记住一定要把限定词加到名字最后。这种方法有很多有点,首先变量名中最重要的部分,即为这一变量赋予最主要的部分应当位于最前面,这样这一部分就会显得突出,并会被首先阅读到,其次,采纳这一会泽将避免程序中的产生的歧义,把计算的量放在名字最后这条规则也有例外,那就是 Num 限定词的位置已经约定成俗,Num 放在变量名的开始位置表示一个总数。

变量名中常用的对仗词

对仗词的使用要准确,通过对应命名规则来提高对仗词的一致性,从而提高可读性,下面是一些常用的对仗词

begin/end

first/last

locked/unlocked

mid/max

next/previous

old/new

opened/closed

visible/invisible

source/target

source/destination

up/down

为特定类型的数据命名

在位数据命名的时候,除了通常的思考事项之外,为一些特定类型数据命名还要求做出一些特殊的思考,接下来将讲述与循环变量、状态变量、临时变量、布尔变量、枚举变量和具有常量有关的考虑事项

为循环下标命名

循环是一种极为常见的计算机编程特征,为循环中的变量进行命名的原则也由此而生,i、j、k 这些名字都是约定俗称的

如果一个变量要在循环之外使用,那么就应该起一个比上面哪个更有意义的名字,比如在文件中读取记录,并且要记录下所读取记录的数量,那么 recordCount 这样的名字就很合适了

另外如果循环不止几行,那么读者很容易忘记,i 本身的含义,因此最好给循环下标换一个更有意义的名字,由于代码会经常修改、扩充、或者复制到其他程序中,因此,许多有经验的程序员索性不适用类似 i 这种名字

导致循环边长的最常见原因之一就是穿线嵌套使用,如果多个嵌套那么应该给变量赋予更长的名字提高可读性

谨慎的为下标变量命名可以避免产生下标串话:想用 j 的时候使用了 i 想用 i 的时候使用了 j

如果你一定要用 i j k 那么一定不要把他用在循环之外,因为这种传统已经深入人心了,一旦违背该原则,将这些变量用于其他用途就可以能产生误解。

为状态变量命名

状态变量用于描述程序的状态,下面给出它的命名原则。

为状态变量取一个比 flag 更好的名字,最好是把标记看做状态变量。标记的名字中不应该含有 flag,因为从中丝毫看不出该标记是做什么的,为了清楚起见,应该用枚举类型、具名变量,或用作具名常亮的全局变量来对其赋值

如果你发现自己需要猜测某段代码的含义的时候,就该考虑为变量重新命名。

为临时变量命名

临时变量用于储存计算的中间结果,作为临时占位符,以及储存内务管理值,他们常被赋予 temp、x 或者一些其他模糊且缺乏描述性的名字,通常,临时变量是一个信号,表明程序员还没有完全将问题弄清楚,而且由于这些变量被正式赋予一种‘临时’状态,因此,程序员会秦翔宇比其他变量更加随意的对待这些变量,从而增加了出错的可能性。

警惕临时变量临时性的保存一些值常常是很有必要的,但是无论从那种角度来看,程序中大多数变量都是临时性的。

为布尔变量命名

下面是为布尔变量名命名要遵守的几条规则

谨记典型的布尔变量名

done 用 done 表示某件事已经完成,这一变量可用于表示循环结束,或者一些其他的操作,在事情完成之间将 done 设为 false 在完成之后设置为 true