C++编程规范(一)

        

目录

1.文件名

2. 版权信息

3. 头文件

4. 作用域

(1)在命名空间的最后注释出命名空间的名字​​​​​​​

(2)避免使用using引入整个命名空间的标识符号

(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关键字等进行作用域限制

 


版权声明:本文为weixin_43340455原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。