background image

C++/C 编程指南

—命名规则

第 3

 

章 命名规则

比较著名的命名规则当推 Microsoft

公司的 匈牙利 法,该命名规则的主要思想是 在变

量和函数名中加入前缀以增进人们对程序的理解 。例如所有的字符变量均以 ch 为前缀,
若是指针变量则追加前缀 p。如果一个变量由 ppch 开头,则表明它是指向字符指针的指针。
 

匈牙利 法最大的缺点是烦琐,例如

int i, j, k;
float x, y, z;

倘若采用 匈牙利 命名规则,则应当写成
int iI, iJ, ik; // 

 

前缀 i 表示 int 类型

float fX, fY, fZ; // 

 

前缀 f 表示 float 类型

如此烦琐的程序会让绝大多数程序员无法忍受。
据考察,没有一种命名规则可以让所有的程序员赞同,程序设计教科书一般都不指定命

名规则。命名规则对软件产品而言并不是 成败悠关 的事,我们不要化太多精力试图发明
世界上最好的命名规则,而应当制定一种令大多数项目成员满意的命名规则,并在项目
中贯彻实施。
3.1 共性规则
本节论述的共性规则是被大多数程序员采纳的,我们应当在遵循这些共性规则的前提下 ,
再扩充特定的规则,如 3.2 节。

l 【规则 3-1-1

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

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

l 【规则 3-1-2

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

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

l 【规则 3-1-3】命名规则尽量与所采用的操作系统或开发工具的风格保持一致。
例如 Windows

应用程序的标识符通常采用 大小写 混排的方式,如 AddChild。而 Unix 应

用程序的标识符通常采用 小写加下划线 的方式,如 add_child。别把这两类风格混在一起
用。

l 【规则 3-1-4】程序中不要出现仅靠大小写区分的相似的标识符。
例如:
int x, X; // 变量 x 

 

与 X 容易混淆

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