第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);


l 【法则3-1-5】措施中不要呈现标识符完全沟通的局部变量和全局变量,尽量两者的浸染域差异而不会产生语法错误,但会使人误解。


l 【法则3-1-6】变量的名字该当利用“名词”可能“形容词+名词”。

譬喻:

float value;

float oldValue;

float newValue;


l 【法则3-1-7】全局函数的名字该当利用“动词”可能“动词+名词”(动宾词组)。类的成员函数该当只利用“动词”,被省略掉的名词就是工具自己。

譬喻:

DrawBox(); // 全局函数

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

C语言/C++ 教程

2017-11-07


第3章 定名法则 较量著名的定名法则当推Microsoft公司的匈牙利法,该定名法则的主要思想是在变量和函数名中插手前缀以增进人们对措施的领略。譬喻所有的字符变