目录
(3)避免进行大量构造及析构操作
(4)尽量在变量声明时进行初始化,且避免进行无效的初始化
(5)尽量避免全局函数和全局变量,使用命名空间或static关键字等进行作用域限制
什么是C++的编程规范,编程规范重要吗?
当然重要啦,你想想一个团队里面好几个程序猿,每个人都有自己的编程习惯,那么以后维护代码的那个人不是得类似,举个例子,下面的代码:
void cc(int i){
int j;
if(i > 5) j = 0;
else j = 1;
}
在上面这个代码函数中,你知道这个函数的功能是什么吗?包括里面每个变量的含义,代表了什么?不知道吧。这个代码量还算是比较少,一旦你的代码量达到几万行,然后所有变量和函数都这样定义,那我估计你自己都要疯掉,不止你的同事。所以在日常的编程中,需要注意编程要规范,相反地,你来看看下面的代码,就算没还没有写注释,那我们也能猜到这个函数大概的功能是链接电脑的功能,并且会传入一个“线”的参数,然后判断线的数量大于5条,就给结果 result 赋值0。
void ConnectComputer(int line){
int result;
if(line > 5) result= 0;
else result= 1;
}
其次,一定要养成编写代码边注释的习惯:
/*
* 函数功能:链接电脑的函数
* 函数参数:int line
* 函数返回值:void
*/
void ConnectComputer(int line){
int result;
if(line > 5) result= 0;
else result= 1;
}
针对小编在工作中和参考一些文档整理出来一些编程的规范,现在就无偿的献给大家。
1.文件名
C++文件名全部都是小写,且单词之间用_分割,如:gloable.cpp
所有文件均需要统一格式的版权信息
2. 版权信息
3. 头文件
在.h中使用#define来防止头文件被多重包含,并在最后注释出宏的名字,命名格式为:
// 格式:
<PROJECT>_<FILE>_H_
// 例子:假设在工程SERVEN中的一个COUNT.cpp
# ifndef SERVEN_COUNT_H_
# define SERVEN_COUNT_H_
...
# endif
尽量避免使用前置声明,优先使用#include来包含相关头文件:
包含头文件:#include "timer.h" // 优先使用
前置声明:class Timer; // 尽量避免
#include的包含顺序:
头文件的包含顺序为:当前.cpp文件直接关联的头文件、C库文件、C++库文件、其他项目的头文件、本项目中的其他头文件。
4. 作用域
(1)在命名空间的最后注释出命名空间的名字
namespace mynamespace{
// 注意不要使用缩进...
} // namespace mynamespace
(2)避免使用using引入整个命名空间的标识符号
// 禁止 —— 污染命名空间
using namespace mynamespace;
(3)避免进行大量构造及析构操作
// 循环调用构造函数:
for (int i = 0; i < 1000; i++) {
SERVEN s; // 低效,构造函数和析构函数分别调用1000次
s.print(i);
}
// 改为下面的方式:
SERVEN s; // 构造函数和析构函数只调用1次
for (int i = 0; i < 1000; i++) {
s.print(i);
}
(4)尽量在变量声明时进行初始化,且避免进行无效的初始化
int i;i = f(); // 坏 —— 声明与初始化分离
int j = g(); // 好 —— 声明时初始化
int k = 0; // 坏 —— 无效初始化
k = 0xff;
(5)尽量避免全局函数和全局变量,使用命名空间或static关键字等进行作用域限制