C/C++编程规范

来源:互联网 发布:java treemap 红黑树 编辑:程序博客网 时间:2024/05/25 19:59

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 语句注释

  • 对语句的注释必须放在其上方相邻位置,不要放在下面。
  • 程序块的结束行右方最好加注释标记,以表明某程序块的结束。
  • 过长的函数实现,最好将其语句按实现的功能分段加以概括性说明
  • 必须对不易理解的分支条件表达式加注释。

 

 

 

     
原创粉丝点击