if(test == true) {
... }
for(i = 1; function_call(i) == true; i++) {
... }
2.4.5 禁用Goto语句
规范级别:规则
规则描述:程序中不要使用goto语句。 理由:这条规则的目的是为了确保程序的结构化,因为滥用goto语句会使程序流程无规则,可读性差。
Goto语句只在一种情况下有使用价值,就是当要从多重循环深处跳转到循环之外时,效率很高,但对于一般要求的软件,没有必要费劲心思追求多么高的效率,而且效率主要是取决于算法,而不在于个别的语句技巧。 2.4.6 程序中禁用break、continue
规范级别:规则 规则描述:
在控制语句 (for, do, while) 块中,禁止使用Break和continue。 在switch中的case语句块不受该规则限制。 理由:
在控制语句 (for, do, while) 块中使用Break和continue,会打乱代码结构化的流程,使代码的可读性降低。 2.4.7 字符串的赋值
规范级别:规则 规则描述:
字符串的赋值应采用_T(“”)模式。
理由:改善可移植性。 举例:
//不要象下面这样写代码:
Cstring strError = “syntax error”;
//应该这样写:
Cstring strError = _T(“syntax error”);
2.4.8 避免对浮点数值类型做精确比较
规范级别:规则
规则描述:不要对浮点类型的数据做等于、不等于这些精确的比较判断,要用范围比较代替精确比较。
理由:由于存在舍入的问题,计算机内部不能精确的表示所有的十进制浮点数,用等于、不等于这种精确的比较方法就可能得出与预期相反的结果。所以应该用大于、小于等范围比较的方法代替精确比较的方法。 举例:
//不要象下面这样写代码: float number; ? ?
if (number = = 0) //精确比较
? ? 2.4.9 new 和 delete
规范级别:规则 规则描述:
局部的new 和 delete 要成对出现;
new要与delete对应,new[]要与delete[]对应。
理由:防止内存泄露。
2.4.10对switch语句中每个分支结尾的要求
规范级别:规则 规则描述:
switch语句中的每一个case分支,都要以break作为分支的结尾(几个连续的空case语句允许共用一个)。 理由:
使代码更容易理解;减少代码发生错误的可能性。 2.4.11switch语句中的default分支
规范级别:规则 规则描述:
在switch语句块中,一定要有default分支来处理其它情况。
理由:
用来处理switch语句中默认、特殊的情况。
2.4.12对指针的初始化
规范级别:建议 规则描述:
在定义指针变量的同时,对其进行初始化。如果定义时还不能为指针变量赋予有效值,则使其指向NULL。
理由:减少使用未初始化指针变量的几率。 举例:
// 不要这样写代码 int* y ; y = &x ; ...
// 应该这样写 int* y = &x; ... 2.4.13释放内存后的指针变量
规范级别:建议 规则描述:
当指针变量所指的内存被释放后,应该赋予指针一个合理的值。除非该指针变量本身将要消失这种情况下不必赋值,否则应赋予NULL。
理由:保证指针变量在其生命周期的全过程都指向一个合理的值。 2.4.14指针指向的数据成员的访问方式
规范级别:规则 规则描述:
在代码中用ptr->fld的形式代替(*ptr).fld的形式。
2.5函数
对函数的要求。
2.5.1 明确函数功能
规范级别:规则
规则描述:函数体代码长度不得超过100行(不包括注释)。
理由:明确函数功能(一个函数仅完成一件事情),精确(而不是近似)地实现函数设计。 2.5.2 将重复使用的代码编写成函数
规范级别:建议 规则描述:
将重复使用的简单操作编写成函数。
理由:
对于重复使用的功能,虽然很简单,也应以函数的形式来处理,这样可以简化代码,
使代码更易于维护。
2.5.3尽量保持函数只有唯一出口
规范级别:规则
规则描述:应该尽量保证一个函数只有一个出口。 理由:增加函数的可靠性。 2.5.4 函数声明和定义的格式要求
规范级别:规则
规则描述:在声明和定义函数时,在函数参数列表中为各参数指定类型和名称。 理由:提高代码的可读性,改善可移植性。 举例:
// 不要象下面这样写代码:
f(int, char*); //函数声明 f(a, b) //函数定义 int a; char* b {
... }
// 应该这样写:
相关推荐: