变量的命名1

来源:互联网 发布:ticctv网络监控测试仪 编辑:程序博客网 时间:2024/05/17 22:03

为变量命名时,最重要的考虑事项是,该名字要完全,准确地描述出该变量所代表的事物。

最适当的名字长度

研究发现,当变量名的平均长度在10到16个字符的时候,调试程序所花费的气力是最小的。这项原则并不意味着你应该尽量控制变量长度,它强调的是,如何你检查自己写的代码是发现了很多更短的名字,那么你需要认真检查,确保这些名字含义足够清晰。

变量名中的计算值限定词

很多程序都有表示计算结果的变量:总额,平均值,最大值,等等。如果你要用类似于Total,Sum,Average,Max,Min,Record,String,Pointer这样的限定词来修改某个名字,那么请记住把限定词加到名字的后面,如studentTotal,salaryAverage。这样一来,名字中最重要的部分就会位于名字的前部而变得更突出。

但这条规则也有例外,如Num放在变量名的开始位置代表一个总数:如numCustomers 表示员工的总数,Num放在变量名的结束位置代表一个下表:customerNum 表示当前员工的序号。然而,由于这样使用Num常常会带来麻烦,因此最好的办法是避开这些问题,用Count或Total代表总数,用Index代表某个特定的员工。

变量名中的对仗词

begin/end    first/last    locked/unlocked    min/max    next/previous    old/new    opened/closed    visible/invisible    source/target    up/down

为循环下标命名

在循环中,i,j,k,这些名字都是约定俗称的。

for ( i = firstItem; i < lastItem; i++ ){       data[i] = 0;}

如果循环不是只有几行,那么读者会很容易忘记 i 本来的含义,因此你最好给循环下标换一个更有意义的名字。

for ( teamIndex = 0; teamIndex < teamCount; teamIndex++ ){      for ( eventIndex = 0; eventIndex < eventCount[ teamIndex ]; eventIndex++ ){             score[ teamIndex ][ eventIndex ] = 0;       }}
如果你一定要用i,j,k,那么不要把它们用于简单循环的循环下标之外的任何场合——这种传统已经太深入人心了,一旦违背该原则,将这些变量用于其他用途就可能造成误解。

为状态命名

为状态变量取一个比flag更好的名字。标记的名字中不应该含有flag,因为你从中丝毫看不出该标记是做什么的。为了清楚起见,标记应该用枚举类型,具名常量,或用作具名常量的全局变量来对其赋值,而且其值应该与上面这些量做比较。如statusFlag就不懂其意,但是fileReady就很清楚。

为临时变量命名

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

为布尔变量命名

谨记典型的布尔变量名

  1. done    可用于表示循环结束或者一些其他的操作已完成。在事情完成之前把done设为false,在事情完成之后设为true。
  2. error    在错误发生前把变量值设为false,在错误已经发生时设为true。
  3. found   在没有找到该值的时候设为false,一旦找到就设为true。
  4. success 或 ok  用来表明一项操作是否成功。如果可以,请用一个更具体的名字代替success,以便更具体地描述成功的含义。

给布尔变量赋予隐含 真/假 含义的名字。像done和success就很不错,而status和sourcefile却很糟糕。

为枚举类型命名

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

Public Enum Color    color_Red    Color_Green    Color_BlueEnd Enum