首页 > 代码库 > 软件架构————如何写好变量(2)

软件架构————如何写好变量(2)

变量名的力量

最重要的命名注意事项

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


以问题为导向

一个好的名字反应的通常都是问题,而不是解决方案。好的名字通常表达的是“什么what”,而不是“如何how”。一般而言,如果一个名字反映了计算的某些方面而不是问题本身,那么它反应的就是“如何how”而不是“什么what”了。避免这样的命名,而该名字中反映出问题的本身。


最适当的名字长度

一般变量名平均长度在10到16个字符的时候,调试程序比较容易。这个原则并不是严格限制变量名的长度,而是强调在查看自己写的代码时发现了很多更短的名字,那么需要认真检查,确保这些名字含义足够清晰。


作用域对变量名的影响

短的变量名不是总是不好的,当把一个变量名取得很短的时候,如i,这一长度本身就对该变量做出了一些说明,也就是说,该变量代表的是一个临时的数据,它的作用域非常有限。

较长的名字适用于很少用到的变量或者全局变量,而较长的名字则适用于局部变量或者循环变量。

对位于全局命名空间中的名字加以限定词,如果在全局变量空间中定义了一些变量,那么请考虑是否需要采用某种方式对全局变量命名空间进行划分,避免产生命名冲突。


变量名中的计算值限定词

如果用类似于Total、Sum、Average、Max、Min、Record、String、Pointer这样的词来修改某个名字,那么最好把这些限定词放在名字的后面。

这种方法的优势在于:变量名中最重要的部分主要含义在前,这一部分就会显得很突出,首先被阅读到。其次,这样可以防止歧义,同一命名规则。


为特定类型的数据命名

为循环下表命名

如果一个变量要在循环之外使用,那么就应该为它去一个比i,j或者k更有意义的名字。如果循环不是只有几行,那么读者会很容易忘记i本来的含义,因此最好给循环下标换一个更有意义的名字。


为状态变量命名

为状态变量去一个比flag这种名字更好的名字,最好把标记看做状态变量。标记应该用枚举、具名常量的全局变量来对其赋值,而且其值应该与上面这些变量做出比较。


为临时变量命名

临时变量作用域存储计算的中间结果,作为临时站位符,以及存储内务管理值。他们常被赋予temp、x或者其他一些模糊缺乏描述性的名字。通常,临时变量是一个信号,表明程序员还没有完全把问题弄清楚。


为布尔变量命名

典型的布尔命名:done表示时间已经完成,error表示有错误发生,found表示某个值已经找到,success或者ok表示操作是否完成。

给布尔变量赋予隐含“真/假”含义的名字比如像典型布尔命名的方法。但是像isDone这种命名方法不怎么要,它的缺点之一就是降低了简单的逻辑表达式的可读性:if(isDone)的可读性要略差于if(Done).


为枚举类型命名

在使用枚举类型的时候,可以通过使用组前缀来明确表示该类型的成员都同属于一个组如color_,month_等。


为常量命名

在具名常量时,应该根据该常量所表示的含义,而不是该常量所具有的数值为该抽象事物命名。


应该避免的名字

1.避免使用令人误解的名字或缩写

2.避免使用具有相似含义的名字

3.避免使用具有不同含义但却有相似名字的变量

4.避免使用发音相似的名字,比兔wrap和rap

5.避免在名字中使用数字,如file1,file2

6.避免在名字拼错单次

7.避免使用英语中常常拼错的单次

8.不要仅靠大小写来区分变量名,因为有的语言不区分大小写,而且也容易难以理解类名称和实体名之间的区别。

9.避免使用多种自然语言,一个项目中应该统一一种语言,而不是百花齐放,这样的程序难以区分,而且会引起歧义

10.避免使用标准类型、变量和子程序名称的名字

11.不要使用与变量含义完全无关的名字

12.避免在名字中包含容易混淆的字符如小写的l和1,数字2和z扥等。


软件架构————如何写好变量(2)