2.8 公共变量
对公共变量(全局变量)的要求。
2.8.1 严格限制公共变量的使用
规范级别:建议 规则描述:
在程序中要尽可能少的使用公共变量。在决定使用一个公共变量时,要仔细考虑,权衡得失。 理由:
公共变量会增大模块间的耦合。 2.8.2 明确公共变量的定义
规范级别:规则 规则描述:
当你真的决定使用公共变量时,要仔细定义并明确公共变量的含义、作用、取值范
围、与其它变量间的关系。明确公共变量与操作此公共变量的函数之间的关系,如访问、修改和创建等。
2.8.3防止公共变量与局部变量重名 规范级别:规则
规则描述:防止公共变量与局部变量重名。
2.9 其它
下面这几条要求,不适合合并到上面任何一类,所以单独作为一部分。 2.9.1 不要使用结构体
规范级别:建议
规则描述:在C++中,不要再使用struct。 理由:以符合面向对象的思想。 2.9.2 不要使用联合体
规范级别:建议
规则描述:在C++中,不要再使用union。 理由:
●由于union成员公用内存空间所以容易出错,并且维护困难; ●使用union通常意味着非面向对象的方法。 2.9.3 用常量代替宏
规范级别:规则
规则描述:使用const来定义常量,代替通过宏来定义常量的方法。 理由:在不损失效率的同时,使用const常量比宏更加安全。 举例:
//宏定义的方法
#define string \#define value 3
//常量定义的方法可以代替宏,且要更好 const char* string = \const int value = 3; 2.9.4 括号在宏中的使用
规范级别:规则
规则描述:对于宏的展开部分,在宏的参数出现的地方要加括号“()”。 理由:保证宏替换的安全,同时提高代码的可读性。 举例:
// 不要这样写
#define GET_NAME(obj,ind) obj->name[ind] // 应该这样写
#define GET_NAME(obj,ind) (obj)->name[ind]
2.9.5 尽量使用C++风格的类型转换
该规则参考自《More Effective C++》中的条款2。
规范级别:建议 规则描述:
用C++提供的类型转换操作符(static_cast,const_cast, dynamic_cast和reinterdivt_cast)代替C风格的类型转换符。 理由:C风格的类型转换符有两个缺点:
1 允许你在任何类型之间进行转换,即使在这些类型之间存在着巨大的不同。 2 在程序语句中难以识别。 2.9.6 将不再使用的代码删掉
规范级别:规则
规则描述:将程序中不再用到的、注释掉的代码及时清除掉。 理由:
理由不用做太多的解释了吧?没有用的东西就应该清理掉。如果觉得这些代码你可能以后会用到,可以备份到其它地方,而不要留在正式的版本里。
相关推荐: