第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(); // 类的成员函数