
4.4.4 给常量命名
C语言本身并不在变量的标识符与常量的标识符之间区分。但我们写代码时通常还是应该注意区分这两者,让看代码的人能够通过标识符知道这究竟是一个变量还是一个常量。
跟函数及变量类似,常量也有好几种起名的方式。下面这几种方式,都经常用来区分常量与变量:
□给常量添加k或k_前缀,例如kInchesPerFoot、k_inches_per_foot。
□给常量添加Const或_const后缀,例如inchesPerFootConst、inches_per_foot_const。
□全大写的蛇形命名法(也叫全大写的下划线分隔命名法),例如THIS_IS_A_CONS-TANT。这种全大写的形式,看上去并不是十分清晰。一般来说,这种形式用在#define指令里面,我们通过这样的形式来表示这个东西其实并不是严格意义上的C语言常量,它仅仅是#define指令所定义的一个符号(symbol),例如INCHES_PER_FOOT。
□采用跟变量相同的命名方式。由于C语言本身并不对常量的名称提出特殊要求,因此,inchesPerFoot这种名称既可以写在int inchesPerFoot这样的代码里面作为变量的名称出现,也可以写在const int inchesPerFoot这样的代码里面作为常量的名称出现。就算我们直接拿inchesPerFoot给常量命名,看到这个名称的人也不会误以为它是一个变量,因为从名称的含义上就可以看出,它说的是每英寸的英尺数(inches per foot),这当然是一个固定不变的值。只不过这种命名方式让人无法单从写法上区分某个名称指的是常量还是变量。
与其他东西的命名方式一样,如果你决定采用某种方式给常量起名,那么就应该明确指出这种方式,并在当前这个程序或这组程序里面坚持使用该方式,而不要混用各种方式。笔者喜欢采用刚才说的第一种或最后一种方式给常量命名。