Fork me on GitHub

代码大全(第二版)笔记——变量名的力量

1.        好的变量名:可读的、易记的和恰如其分的;

2.        命名重要事项:能要完全、准确地描述出该变量所代表的事物;

3.        一个好名字通常表达的是“什么”(what),而不是“如何”(how)

4.        变量名适当长度:820个,强调:并不意味着你尽量要将长度控制在如此的范围,而是当你查看代码时发现了很多更短的名字,那么你需要认真检查,确保这些名字含义足够清晰;

较长的名字:适用于很少用到的变量或者全局变量;

较短的名字:适用于局部变量或者循环变量;

5.        对于位于全局命名空间中的名字要加以限定词:如使用namespace关键字来划分全局命名空间;

6.        变量名中的计算值限定词:表示计算结果的变量:总额、平均值、最大值等,如果需要用到类似于TotalSumAverageMaxMinRecordStringPointer这样的限定词来修改某个名字,那么请记住把限定词加到名字的最后(如:revenueTotal);优点:变量名中最重要的那部分,即为这变量赋予主要含义的部分应当位于最前面,最为突出首先阅读到;

7.        为临时变量进行命名:不要用temp等普遍的临时名;

8.        为循环下标命名:当你的循环超过一到两行代码或出现嵌套循环,那么你应该是ijk以外的其他名字,具有一定意义,具有可读性;

9.        为布尔变量命名:

谨记典型的布尔变量名,如下:

  • done done表示某件事情已经完成。这一变量可用于表示循环结束或者一些其他的操作已完成。在事情完成之前把done设为false,在事情完成之后把它设为true
  • error error表示有错误发生。在错误发生之前设为false
  • found found来表明某个值已经找到了。在还没有找到该值时设为false
  • successOK succesok来表明一项操作是否成功。操作失败时设为false,如果可以,请用一个更加具体的名字代替sucesee,以便更加具体地描述成功的含义。如果完成处理表示这个程序执行成功,那么或许你应该用processingComplete来取而代之。
  • 使用肯定的布尔变量名:否定的名字如notFoundnotDone以及notSuccessful等较难阅读,特别如果它们被求反:is not notFound
  • 有些程序员喜欢在他们写的布尔变量前加上Is,如isErroer?isFound?truefalse回答问题也就为该变量给出了取值。这种方法的优点之一是它不能用于那些模糊不清的名字:isStarts?这毫无意义。它的缺点之一是降低了简单逻辑表达式的可读性:if(isFound)的可读性略差于 if(found)

10.    为枚举类型命名

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

Public Enum Color

        Color_Red

       Color_Green

        Color_Blue

End Enum

     但有些编程语言里,枚举类型的处理很像类,如:Color.Color_Red,如果你正在使用这样的编程语言,那么重复上述的前缀就意义不大了。

11.    为常量命名:在其名常量是,应该根据该常量所表示的含义,而不是该常量所具有的数值为该抽象事物命名。FIVE是个很糟的常量名(不论它所代表的值是否为5.0)

12.    与语言无关的命名规则的指导原则

A、 区分变量名和子程序名字:变量名和对象名以小写字母开始,子程序名字以大写字母开始:variableNameRoutineName()

B、 标识全局变量:一般在全局变量名之前加上g_前缀

C、 标识成员变量:要根据名字识别出变量是类的数据成员。即明确表示该变量即不是局部变量,也不是全局变量。比如说,你可以用m_前缀来标识类的成员变量,以表明它是成员数据;

13.    缩写的一般指导原则

        下面是几项用于创建缩写的指导原则。其中的一些原则彼此冲突,所以不要试图同时应用所有的原则。

使用标准的缩写

  • 去掉所有非前置元音。computer变成cmptrscreen变成scrn
  • 去掉虚词andorthe
  • 使用每个单词的第一个或前几个字母
  • 统一地在每个单词的第一、第二或者第三个(选择最合适的)字母后截断
  • 保留每个单词的第一个后最后一个字母
  • 去除无用的后缀---ing,ed
  • 确保不要改变变量的含义

当你在代码中进行缩写时,希望能增加一张缩写对照表。

posted @ 2012-04-05 20:07  KingsWang  阅读(1946)  评论(2编辑  收藏  举报