C++编程指南学习(四),第1张

C++编程指南学习(四),第2张

第三章命名规则
比较的命名规则要参照微软的“匈牙利”法。这个命名规则的主要思想是“给变量和函数名加上前缀,以提高人们对程序的理解”。比如所有的字符变量都以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]标识符的长度应符合“最小长度和最大信息”的原则。
几十年前,旧的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 [Rule 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 old value;
float new value;

l【规则3-1-7】全局函数的名称应该是“动词”或“动词+名词”(动宾短语)。类成员函数应该只使用“动词”,省略的名词就是对象本身。
例如:
DrawBox();//全局函数
box-> draw();//类的成员函数

l【规则3-1-8】用正确的反义词命名具有互斥意义的变量或作用相反的函数。
例如:
int minValue;
int max value;

int SetValue(…);
int GetValue(…);

2【建议3-1-1】尽量避免在名称中使用数字编号,如Value1、Value2等。,除非在逻辑上有必要这样做。这是为了防止程序员偷懒,不愿意考虑命名,导致名字没有意义(因为用数字编号最方便)。
3.2 Windows应用程序的简单命名规则
作者对“匈牙利”的命名规则进行了合理的简化。以下命名规则简单易用,比较适合Windows应用程序的开发。

l[规则3-2-1]类名和函数名是由以大写字母开头的单词组合而成的。
例如:
类节点;//类名
class leaf node;//类名
void Draw(void);//函数名
void SetValue(int value);//函数名

l【规则3-2-2】变量和参数是以小写字母开头的单词组合而成的。
例如:
BOOL flag;
int draw mode;

l【规则3-2-3】常量都是大写字母,单词之间用下划线隔开。
例如:
const int MAX = 100;
const int MAX _ LENGTH = 100;

l【规则3-2-4】静态变量以s_ (static)为前缀。
例如:
void init(…)
{
static int s _ init value;//静态变量

}

L [Rule 3-2-5]如果全局变量是必需的,那么在全局变量前面加上g_ (global)。
比如:
int g _ how many people;//全局变量
int g _ howMuchMoney;//全局变量

l【规则3-2-6】类的数据成员以m_(代表成员)为前缀,可以避免数据成员与成员函数的参数同名。
例如:
void object::setvalue(int width,int height){
m _ width = width;
m _ height = height;
}

l[规则3-2-7]为了防止某个软件库中的某些标识符与其他软件库的标识符发生冲突,可以在各种标识符中添加反映软件性质的前缀。比如3D图形标准Opengl的所有库函数都是以gl开头,所有常量(或宏定义)都是以GL开头。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++编程指南学习(四)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情