编码规则规范
0、使用h头树型
h头文件树型链接,要添加#pargma once 多使用声明把头文件移入CPP中屏蔽接口显露有用的接口即可,h中只能有声名,不能有定义类或实际代码(实际函数或变量实体
class struct的定义可以在内有函数。
全局变量要 在constant.h中声明,随意#include 在Constant.cpp中定义 全局变量仅在此处有,类库中全无。
h头文件中只有声明,不存在定义,定义全部放在cpp/c文件中。
1、避免使用“魔数”
避免:for (int index=0;index<512;++index){ //魔数
推荐用法:int bufsize=512;
for (int index=0;index<bufsize;++index){
使用宏定义在h头中 该头可以随便include
2、注意比较操作符的使用
使用了“<”而不是“!=”应该这样改:
int bufsize=512;
for (int index=0;index!=bufsize;++index){
3、要善于利用“const”对象
还是上面的程序代码,其中我们定义了“int bufsize=512”,这就意味着在程序的某个地方都可以修改bufsize的值,这显然不符合我们的初衷。所以这里就有一个比较严重的
问题:“bufsize”是可以修改的。bufsize可能会被有意或无意地修改。我们当然不希望这种情况发生,所以可以这样改:
const int bufsize=512;
for (int index=0;index!=bufsize;++index){
4、尽量避免使用指针和数组
指针和数组容易产生不可预料的错误,指针用于低级操作,容易产生和繁琐细节相关的错误。而且使用指针的语法规则还比较令人费解。
数组最大的问题就是不能动态增长,必须要预先设定好数组的才长度。而且数组一经定义,就不允许再添加新元素了,如果需要添加新元素,程序员就要自己管理内存,
即重新定义一个数组,再把旧数组的元素复制过去,同时还要时刻注意防止数组越界造成的“缓冲区溢出”等问题。
现在许多有用的程序都可不使用数组或指针实现,现代C++采用Vector取代一般的数组,用迭代器取代指针,虽然指针本质上也是迭代器。看下面的代码:
string word;
vector text;
while (cin>>word){
text.push_back(word);
}
尽量封装入类中使用类。
5、分层开发慎用全局变量和静态变量
lul 分层 :
1、类库层 (不用静态或全局)
2、模块框架层 (不用 或禁用全局或静态)
3、应用软件层 (只在此处用全局或静态)
6、内存管理
基本数据类型做为容器,容存数值,容器中又分为两种 一种是 实体类型容器 一种是引用类型,程序各模块之间的关系是调用
或被调用关系。
lul使用 规则:
1、传入的参数要等到调用的黑盒模块执行完时才销毁,黑盒模块为一个函数或一个线程。
2、黑盒模块传出的数据 不销毁,黑盒作为数据源,由调用者销毁。
3、黑盒模块自管自己使用数据块,传入的不管,传出的只管生产。
7、lib、dll规范
lib 中可放全局或静态或函数实体或类定义,都可以,但尽量只放函数或类型定义,lib是加载入exe。
dll 中可放全局或静态或函数实体或类定义,都可以,但是导出只用函数。lib引入的只是dll中的声明。
8、声明的定义坚守原则
1、声明一定只在h头中,定义一定在cpp/c中;
2、局部变量在需时才定义
9、版式风格
1、打括号风格
1、1 采用括起 在前句之后,收起的括号单独一行
1、2 采用 括起 和 收起都占一行