1. 命名规范
1.1 一般命名规范
-
C++命名规范包括 文件命名规范和 标识符命名规范
-
标识是指C++中语法对象的名字(常量名、变量名、函数名、类和类别名以及预处理名等),其基本语法是以字母开头,由字母数字和下划线组成。
-
标识符最好由两部分组成:标识前缀+含义标识。
-
标识前缀最好用不超过三个字母的缩写词组成,缩写最好全部大写。
-
含义标识由一个或多个单词组成时,一般不缩写,除非此缩写很常用。
1.2 文件命名规范
-
文件名必须由前缀和后缀组成,最好采用长文件命名格式。
-
文件名必须用英文字母表达,避免使用中文。
-
对于机构单词组合表达的文件名,每个单词第一个字母必须大写。
-
源文件后缀格式可以为.cpp,头文件后缀格式可以为.h。
-
每一个类最好都有一个头文件和源文件,头文件和源文件都必须与类名相对应。
例如:类CBufferControl对应BufferControl.h,BufferControl.cpp。
1.3 变量命名规范
-
变量命名格式必须是:scope_+prefix_+qualifer(范围前缀+类型前缀+含义标识)。
-
范围前缀的取名遵照下表:
-
当变量作为函数参数时,建议如下使用范围前缀:
i_:输入参数
o_:输出参数
io_:输入输出参数
1.4 函数命名规范
-
类成员函数命名规则最好是:函数的含义标识。
-
其它函数命名规则最好是:范围前缀_+函数返回置类型+函数的含义标识。
-
函数的含义标识必须 能反映函数实现的功能。
-
函数的含义标识中第 一个字母必须大写。
-
对于几个单词组合表达的函数的含义标识, 每个单词第一个字母必须大写。
-
组合单词时最好采用动宾结构。如CheckErrors()。
1.5 类命名规范
-
类第一个字母必须为大写“C”。
-
对于几个单词组合表达的类名,每一个单词第一个字母需大写。
1.6 其他命名规范
-
常量中所有字母必须大写,单词间用“_”隔开。例如:const int A_GLOBAL_CONSTANT=4;
-
联合体类型命名的格式为“UN_含义标识”,含义标识全部大写,单词间用“_”隔开。
-
结构体类型命名的格式为“ST_含义标识”,含义标识全部大写,单词间用“_”隔开。
-
枚举类型命名的格式为“EN_含义标识”,含义标识全部大写,单词间用“_”隔开。
-
宏,所有字母必须大写,单词间用“_”隔开。
2. 注释规范
2.1 一般规范
-
注释的目的是解释代码的目的、功能和算法,提供代码以外的信息,帮助读者理解代码,禁止注释无关信息。
-
注释必须 语言简练,明确易懂。
-
单行注释必须用双斜杠进行注释,多行注释必须用/**/, 注释内容最好放在对应代码的上方。
-
注释与前面的执行语句之间必须空一行。
-
必须 一边写代码一边注释,修改代码同时修改相应的注释,以保证 注释与代码的一致性。
-
注释行数(不包括程序头和函数头说明部分)必须占总行数的1/5到1/3。
2.2 常量、变量和宏的注释
-
被保存值的定义(必选)
-
合法取值的范围(可选)
-
与其他数据,函数或模块的关系(可选)
例如:
//default quantilizer level, from 1 to 31.
const int DEFAULT_QL=8;
//number of gob, 12 for CIF and 3 for QCIF.
int nGob;
2.3 结构体和联合体的注释
-
他描述的对象是什么(必须)
-
对其分量应按变量注释要求加以注释(必须)
-
与其他数据,函数或模块的关系(可选)
例如:
//3D Point(nPosX, nPosY, nPosZ)
typedefstruct ST_ THREED_ PT_TAG{
int nPosX; //x Position
int nPosY; //y Position
intnPosZ; //z Position
}ST_ THREED_ PT;
2.4 函数的注释
-
对于比较重要的函数或方法必须在其 声明处作适当注释,说明该函数的功能及参数的含义,注释模板如下:
//Get data pointer of sub image
Short* GetSubImageData(int i_nLeft, //Left position of sub image.
inti_nTop, //Top position of sub image.
WORD i_wWidth, //Width of sub image.
WORD i_wHeight); //Height of sub image.
-
对于自行编写的函数,若是系统关键函数,必须在 函数实现部分的上方标明该函数的信息,格式如下:
/****************************************************
* 函数名:
* 功能描述:
* 返回值:
* 参数:(名称,含义,取值说明)
* 作者:
* 时间:
* 修改记录:(修改序号,日期,修改人员,修改说明)(在修改记录栏必须按时间先后顺序自下往上排列。)
*****************************************************/
/****************************************************
* Function Name:
* Description:
* Return Value:
* Parameters :(Name,Description,Value)
* Author:
* Date:
* Change log:(ID,Date,Author,Description)
*****************************************************/
注意:注释文本每行的跨度禁止超过上下条纹框的范围,换行时必须以冒号所在位置为准进行左对齐。
2.5 文件头部注释
-
在 文件头部必须加注释表明该文件的一些信息,其格式如下:
/****************************************************
* 文件名 :
* 版本 : 如:1.0/0.8/0.7
* 功能描述 :
* 创建日期 :
* 作者 :
* 修改记录:(序号,修改说明,日期,修改人员)(在修改记录栏必须按时间先后顺序自下往上排列,修改记录中必须特别注明修改了哪些函数)
*****************************************************/
/****************************************************
* File Name :
* Version Number :
* Description :
* Date: * Author:
* Change log:(ID,Date,Author,Description)
*****************************************************/
-
注意:注释文本每行的跨度禁止超过上下条纹框的范围,换行时必须以冒号所在位置为准进行左对齐。
2.6 语句注释
-
对语句的注释必须放在其 上方相邻位置,不要放在下面。
-
在 程序块的结束行右方最好加注释标记,以表明某程序块的结束。
-
过长的函数实现,最好将其语句 按实现的功能分段加以概括性说明。
-
必须对 不易理解的分支条件表达式加注释。