CC++编码规范(2)

2019-08-31 15:29

/* 获得系统指针和网络指针的副本 */

nRepssnInd = SsnData[ index ].nRepssnIndex ;

nRepssnNi = SsnData[ index ].ni ;

例子2

nRepssnInd = SsnData[ index ].nRepssnIndex ;

nRepssnNi = SsnData[ index ].ni ;

/*获得系统指针和网络指针的副本 */

应如下书写

/*获得系统指针和网络指针的副本 */

nRepssnInd = SsnData[ index ].nRepssnIndex ;

nRepssnNi = SsnData[ index ].ni ;

<规则3> 对于所有的常量,变量,数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,在声明时都必须加以注释,说明其含义。

示例:

/* 活动任务的数量 */

#define MAX_ACT_TASK_NUMBER 1000

#define MAX_ACT_TASK_NUMBER 1000 /*活动任务的数量 */

/* 带原始用户信息的SCCP接口 */

enum SCCP_USER_PRIMITIVE

{

N_UNITDATA_IND , /* 向SCCP用户报告单元数据已经到达 */

N_UNITDATA_REQ , /* SCCP用户的单元数据发送请求 */

} ;

<规则4> 头文件、源文件的头部,应进行注释。注释必须列出:文件名、作者、目的、功能、修改日志等。

例如:

/*********************************************

文件名:

编写者:

编写日期:

简要描述:

修改记录:

********************************************/

说明:简要描述一项描述本文件的目的和功能等。修改记录是修改日志列表,每条修改记录应包括修改日期、修改者及修改内容简述。

<规则5> 函数头部应进行注释,列出:函数的目的、功能、输入参数、输出参数、修改日志等。

形式如下:

/*************************************************

函数名称:

简要描述: // 函数目的、功能等的描述

输入: // 输入参数说明,包括每个参数的作用、取值说明及参数间关系,

输出: // 输出参数的说明, 返回值的说明

修改日志:

*************************************************/

对一些复杂的函数,在注释中最好提供典型用法。

<规则6> 仔细定义并明确公共变量的含义、作用、取值范围及使用方法。

在对变量声明的同时,应对其含义、作用、取值范围及使用方法进行注释说明,同时若有必要还应说明与其它变量的关系。明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。

示例:

/* SCCP转换时错误代码 */

/* 全局错误代码,含义如下 */ // 变量作用、含义

/* 0 - 成功 1 - GT 表错误 2 -GT 错误 其它值- 未使用 */ // 变量取值范围

<规则7> 对指针进行充分的注释说明,对其作用、含义、使用范围、注意事项等说明清楚。

在对指针变量、特别是比较复杂的指针变量声明时,应对其含义、作用及使用范围进行注释说明,如有必要,还应说明其使用方法、注意事项等。

示例:

/* 学生记录列表的头指针 */

/* 当在此模块中创建该列表时,该头指针必须初始化, */

/* 这样可以利用GetListHead()获得这一列表。*/ //指针作用、含义

/* 该指针只在本模块使用,其它模块通过调用GetListHead()获取*/

/* 当使用时必须保证它非空 */ //使用范围、方法

STUDENT_RECORD *pStudentRecHead;

<规则8> 对重要代码段的功能、意图进行注释,提供有用的、额外的信息。并在该代码段的结束处加一行注释表示该段代码结束。

示例:

/* 可选通道的组合 */

if ((gsmBCIe31->radioChReq >= DUAL_HR_RCR)

&& (gsmBCIe32->radioChReq >= DUAL_HR_RCR))

{

gsmBCIe31->radioChReq = FR_RCR;

gsmBCIe32->radioChReq = FR_RCR;

}

else if ((gsmBCIe31->radioChReq >= DUAL_HR_RCR)

&& (gsmBCIe32->radioChReq == FR_RCR) ) {

gsmBCIe31->radioChReq = FR_RCR;

}

else if ((gsmBCIe31->radioChReq == FR_RCR)

&& (gsmBCIe32->radioChReq >= DUAL_HR_RCR))

{

gsmBCIe32->radioChReq = FR_RCR;

}

/* 本块结束 ( 可选通道组合 ) */

<规则9> 在switch语句中,对没有break语句的case分支加上注释说明。

示例:

switch(SubT30State)

{

case TA0:

AT(CHANNEL, \T+FCLASS=1\\r\

if(T30Status != 0)

{

return(1); }

InitFax(); /* 准备发送传真 */

AT(CHANNEL, \TD\\r\发送CNG ,接收 CED 和 HDLC 标志*/

T1_Flg = 1;

iResCode = 0;

/* 没有 break; */

case TA1:

iResCode = GetModemMsg(CHANNEL);

break;

default:

break;

}

<规则 10> 维护代码时,要更新相应的注释,删除不再有用的注释。

保持代码、注释的一致性,避免产生误解。

1.2 命名

本文列出Visual C++的标识符命名规范。

<规则 1> 标识符缩写

形成缩写的几种技术:


CC++编码规范(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏教版说课集-小学四年级语文上册说课稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: