aihot  2017-05-09 22:57:57  OpenCV |   查看评论   

 常见C/C++编码规范(5)

2.5. 接口 
<规则1> 头文件应采用 #ifndef / #define / #endif 的方式来防止多次被嵌入。 
示例如下: 
假设头文件为揇EF.INC",则其内容应为: 
#ifndef __DEF_INC 
#define __DEF_INC 
... 
#endif 

<规则2> 去掉没有必要的公共变量,时应尽量少用公共变量。 
公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度。应该构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。 

<规则3> 当向公共变量传递数据时,要防止越界现象发生。 
对公共变量赋值时,若有必要应进行合法性检查,以提高的可靠性、稳定性。 

<规则4> 返回值为指针的函数,不可将局部变量的地址作为返回值。 
当函数退出时,非static局部变量将消失,所以引用返回的指针将可能引起严重后果。下例将不能完成正确的功能。 
char *GetFilename(int nFileNo) 

char szFileName[20]; 

sprintf( szFileName, "COUNT%d", nFileNo); 
return szFileName; 


<规则5> 尽量不设计多参数函数,将不使用的参数从接口中去掉,降低接口复杂度。 
减少函数间接口的复杂度。 

<规则6> 对所调用函数的返回码要仔细、全面地处理。 
防止把错误传递到后面的处理流程。如有意不检查其返回码,应明确指明。 如: 
(void)fclose(fp); 

<规则7> 显示地给出函数的返回值类型。无返回值函数定义为void。 
C、C++语言的编译系统默认无显示返回值函数的返回值类型为int。 

<规则8> 声明函数原型时给出参数名称和类型,并且与实现此函数时的参数名称、类型保持一致,无参数的函数,用void声明。 
示例:下面声明不正确。 
int CheckData( ) ; 
int SetPoint( int, int ) ; 
int SetPoint( x, y ) 
int x, y; 

应改为如下声明: 
int CheckData( void ) ; 
int SetPoint( int x, int y ) ; 

<规则9> 检查接口函数所有输入参数的有效性。 
可直接检查或使用断言进行检查,尤其是指针参数。只在本模块内使用的函数可不检查。 

<规则10> 检查函数的所有非参数输入,如数据文件、公共变量等。 
可直接检查或使用断言进行检查,尤其是指针变量。 

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自常见C/C++编码规范(6)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]