骆驼命名法,帕斯卡命名法与下划线命名法

  • Post author:
  • Post category:其他



骆驼式命名法:

正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。例如,下面是分别用骆驼式命名法和下划线法命名的同一个函数:


插入代码:

printEmployeePaychecks();

print_employee_paychecks();

第一个函数名使用了骆驼式命名法,函数名中的每一个逻辑断点都有一个大写字母来标记;第二个函数名使用了下划线法,函数名中的每一个逻辑断点都有一个下划线来标记。

骆驼式命名法近年来越来越流行了,在许多新的函数库和Microsoft Windows这样的环境中,它使用得当相多。另一方面,下划线法是c出现后开始流行起来的,在许多旧的程序和UNIX这样的环境中,它的使用非常普遍。


匈牙利命名法:


广泛应用于象Microsoft Windows这样的环境中。Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯- 西蒙尼(Charles Simonyi) 提出的。

匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变量), 再指针,再简单数据类型,再其它。

例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。

匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。


帕斯卡(pascal)命名法:


与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写,如:

插入代码:        DisplayInfo();

string UserName;

二者都是采用了帕斯卡命名法。在C#中,以帕斯卡命名法和骆驼命名法居多


下划线命名法:

另一种流行的命名规则称为下划线命名法。下划线法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。


共性规则


下面再阐述一些共性的命名规则,这些规则是被大多数程序员采纳的,我们应当在遵循这些共性规则的前提下,再扩充特定的规则。

【规则1】标识符应当直观且可以拼读,可望文知意,不必进行“解码”。

标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。

【规则2】标识符的长度应当符合“min-length && max-information”原则。

【规则3】几十年前老ANSI C规定名字不准超过6个字符,现今的C++/C不再有此限制。一般来说,长名字能更好地表达含义,所以函数名、变量名、类名长达十几个字符不足为怪。那么名字是否越长约好?不见得! 例如变量名maxval就比maxValueUntilOverflow好用。单字符的名字也是有用的,常见的如i,j,k,m,n,x,y,z等,它们通常可用作函数内的局部变量。

命名规则尽量与所采用的操作系统或开发工具的风格保持一致。

例如Windows应用程序的标识符通常采用“大小写”混排的方式,如AddChild。而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child。别把这两类风格混在一起用。

【规则4】程序中不要出现仅靠大小写区分的相似的标识符。

例如:

int x, X; // 变量x 与 X 容易混淆

void foo(int x); // 函数foo 与FOO容易混淆

void FOO(float x);

【规则5】程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。

【规则6】变量的名字应当使用“名词”或者“形容词+名词”。

例如:

float value;

float oldValue;

float newValue;      【规则7】全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身。     例如:

DrawBox(); // 全局函数

box->Draw(); // 类的成员函数

【规则8】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

例如:

int minValue;

int maxValue;

int SetValue(…);

int GetValue(…);



四、目前常用的命名方式

因为匈牙利命名法在某些方面会感觉太繁琐,因此目前常采用骆驼命名和帕斯卡命名相结合的方式。简单说来就是类和结构体使用帕斯卡命名法,而函数、变量、枚举使用骆驼命名法。