还在使用x,y,z,a,b,c等无意义字符做变量名嘛?还因为把变量命名位g,s,b而遭到同学的嘲笑嘛?还因为不知道怎么命名变量能做的更直观嘛?

——Introducing Camel-Case:驼峰命名法

我们现在先来看看一个例子:

假如我们想要定义一个变量存储我们的名字,该怎么命名呢?

mylastname

构成这个变量名的所有字母都通过小写被粗暴地整合在了一起,很难一眼看清,对吧?这种变量命名方法明显地降低了代码的可读性。要不,我们拆分一下单词?

my_last_mane

显而易见地,这个变量名的可读性比上面那种高了很多,我们可以轻易地读出它的各个单词并且很清楚地知道它的意思。但是很显然,这不够紧凑,我们还得多打两个字符(吐槽下这下划线真的不是很好按)。

驼峰命名法

驼峰命名法的命名规格极为形象,通过大小写像驼峰一样变换来实现单词的区分,更方便直观地表示变量名。

那我们来看看驼峰命名法该怎么用:

myLastName

相比于前两种,驼峰命名法既直观又紧凑,保证了代码可读性的同时也兼顾了效率。

驼峰命名法的规则是这样的: 当变量名或函数名是由多个单词连结在一起,构成的唯一识别字时,每一节个单词的首字母都采用大写来区分,单词与单词之间不额外添加下划线。

而以第一个单词的首字母是否要大写为区分,我们又可以分成大驼峰法和小驼峰法。

大驼峰法:

包括第一个单词在内的所有单词的首字母全部大写,如:

  • MyLastName
  • DataBaseUser

小驼峰法:

第一个单词的首字母不大写,其余每个单词的首字母均大写,如:

  • myLastName
  • studentsAverageGrades

驼峰命名法就介绍到这里。


接下来再讲讲我使用的一种命名规则。

强烈建议使用英文命名!!!

变量的命名规则

变量名的命名,首先应该是这个变量要储存的内容的英文意思。借助你强大的英文水平,先把你想好的中文变量名翻译成英文,不会的话就借助翻译软件吧。

然后,如果你翻译出来的内容仅由1个英文单词构成,请直接以这个单词的完全小写的形式命名这个变量。如果是由多个单词组成的词组,应该使用小驼峰法的方式为这个变量命名。 记住,它应该是个名词或者名词性词组。 例如:

salary,tax,carSum,taxRate;

特殊地,给布尔类型的变量命名,建议使用 is + 属性名的方法,依照具体的语境,也可以用can,have,should等前缀代替is,同样使用小驼峰法。同时要记得避免使用否定词。例如:

isReal,isHigh;(√)
isNotTall,isError;(×)

常量的命名规则

常量一般是指使用const关键字修饰定义的数据,有时也只使用预处理宏#define定义的数据。

使用const关键字定义的常量

它的命名规则和变量类似,但是要使用大驼峰法,即第一个单词的首字母也要大写。例如:

Line,SavingAccount,Pi;

使用#define关键字宏定义的常量

它的所有字母都应该采用大写,同时,若是由多个单词组成的变量名,为了区分每个单词,在每两个单词之间应该添加下划线。例如:

PI,MAX_SIZE;

函数/方法的命名规则

函数的名称应该是一个动词或者一个动词词组。如果函数名仅由单个单词构成,那么请以这个单词的完全小写形式命名这个函数。如果这个函数名是一个动词词组,请以小驼峰法的方式命名这个函数。例如:

getArea,setPath,takeSteps;

名字空间的命名规则(C++)

对于名字空间,请以一个英文单词完成对它的命名,而且,应该使用它的完全小写形式。例如:

model,common;

结构、类(C++)的命名规则

结构体和类的名称应该是一个名词或者名词性词组。若使用单个单词命名,请首字母大写;若使用词组,应使用大驼峰法命名。例如:

Node,SomeClass;

但是,命名结构和类形成的实例(结构体和对象)时,应该依照一般的变量的命名法进行命名。

对于枚举类型(以enum关键词声明)

同样建议使用名词或者名词性词组,以首字母大写或者大驼峰法命名。

而对于枚举类型的枚举常量,建议以全部大写字母+下划线分割单词的方式命名,同时应尽量使用共同的类型名作为前缀。

例如:

enum Color { COLOR_RED, COLOR_GREEN, COLOR_BLUE };
enum ColorType { COLOR_TYPE_WARM, COLOR_TYPE_COLD };

额外再提几个用于命名的关键字以及技巧,让代码更直观

  • get应该用在直接取得已设定值的函数中。
  • set应该用在直接为变量设定值的函数中。
  • compute应该用在用于进行计算的函数中。
  • find应该用在用于查找的函数中。
  • init/initialize应该使用在用于初始化的函数中。
  • 在需要标识序号的变量名中,使用No + 序号比较合适。
  • 布尔变量的命名应使用is,has等前缀,并且尽量避免否定词。
  • 循环变量建议设置为i,j,k,并且建议优先使用i而把j,k用于循环嵌套。
  • 对于缩略词我们有两种态度:1、对于那种缩写了人家可能就看不懂了的,比如cmd,init,请不要用缩写代替他们。2、对于那种缩写认识展开别人就看不懂的,比如HTML,CPU,老老实实写缩写。

另外,对于自己写的头文件的命名,推荐使用大驼峰命名法。例如

MyClass.h
CppFunction.h

OK,有关命名方法先写这么多。