&&(n7stat_stat_item_valid(stat_item))
&&(act_task_table[taskno].result_data!
=0));
n7stat_str_compare((BYTE*)&stat_object,
(BYTE*)&(act_task_table[taskno].stat_object),
sizeof(_STAT_OBJECT));
长行的拆分
第三章注释
3.1通用规则
●【规则3-1-1】一般情况,需要保证程序有一定的注释。
必须保证关键的函数、流程、类型定义、变量等有相应注释说明。
说明:
注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、。
●【规则3-1-2】注释应当准确、易懂,防止注释有二义性。
说明:
错误的注释不但无益反而有害。
●【规则3-1-3】除非能使用准确的英文表达,则使用中文注释。
●【规则3-1-4】避免在注释中使用缩写,特别是非常用缩写。
说明:
在使用缩写时或之前,应对缩写进行必要的说明。
●【规则3-1-5】需要为代码中使用的缩写增加注释,文件引入的新缩写必须在文件头部加以说明。
●【规则3-1-6】通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的。
说明:
清晰准确的函数、变量等的命名,可增加代码可读性,并减少不必要的注释。
●【规则3-1-7】注释格式尽量统一。
建议使用//进行注释,多行注释可使用“/*……*/”。
3.2文件注释
●【规则3-2】源文件(包含.h头文件、.c源文件及各种脚本文件等)头部应进行注释,应列出:
版权说明、文件名、文件目的/功能,作者、创建日期等;如果源文件引入了新的缩写,则必须在文件头部注释说明。
文件注释格式定义如下(可以不局限于该格式中定义的内容,但必须包含该格式中定义的内容):
/************************************************************
**Copyright(C)2010-2011,XXXCo.Ltd.
**Allrightsreserved.
**
**FileName:
//文件名称
**Description:
//文件描述
**Author:
//作者
**Date:
//创建时间
**Others:
//其它说明
***********************************************************/
/************************************************************
Abbreviation:
//如果文件引入了新的缩写,则必须在此处加以说明
***********************************************************/
举例如下:
/************************************************************
**Copyright(C)2010-2011,XXXCo.Ltd.
**Allrightsreserved.
**
**FileName:
starlib_nvset.h
**Description:
NV参数配置源文件
**Author:
zc
**Date:
2010/4/13
**Others:
***********************************************************/
/************************************************************
Abbreviation:
NCM:
NetChooseMenu网络选择菜单
VBC:
VoiceBroadcast语音播报
***********************************************************/
3.3函数注释
●【规则3-3】函数头部应进行注释,需要列出函数的功能、参数、返回值等。
函数注释格式定义如下(可以不局限于该格式中定义的内容,但必须包含该格式中定义的内容):
/****************************************************************/
//Function:
//函数名称
//Description:
//函数功能描述
//Param:
//参数说明,包括参数的作用、取值范围等,格式如下:
//param1:
输入输出类型[IN/OUT/INOUT]说明
//param2:
输入输出类型[IN/OUT/INOUT]说明
//…
//Return:
//函数返回值说明
//Others:
//其它说明
//Author:
//作者
/****************************************************************/
举例如下:
/****************************************************************/
//Function:
StarLib_SetIdleNetIconType
//Description:
设置待机界面网络图标
//PARAM:
icon:
[IN]待机界面网络图标
//Return:
设置成功=STARLIB_TRUE
//设置失败=STARLIB_FALSE
//Others:
//Author:
zc
/****************************************************************/
3.4数据注释
●【规则3-4-1】对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。
变量、常量、宏的注释应放在其上方相邻位置或右方。
//activestatistictasknumber
#defineMAX_ACT_TASK_NUMBER1000
#defineMAX_ACT_TASK_NUMBER1000//activestatistictasknumber
●【规则3-4-2】数据结构声明(包括结构体、枚举、类等),如果其命名不是充分自注释的,必须加以注释。
对数据结构的注释应放在其上方相邻位置;对结构中每个域的注释放在该域的右方。
//sccpinterfacewithsccpuserprimitivemessagename
enumSCCP_USER_PRIMITIVE
{
N_UNITDATA_IND,//sccpnotifysccpuserunitdatacome
N_NOTICE_IND,/*sccpnotifyusertheNo.7networkcannot
transmissionthismessage*/
N_UNITDATA_REQ,//sccpuser'sunitdatatransmissionrequest
};
●【规则3-4-3】全局变量必须有注释,包括对其功能、取值、及其他注意事项等的说明。
//标志是否通过锁卡流程;TURE=通过锁卡流程,FALSE=锁卡流程失败
PUBLICBOOLEANg_isLockCardPass=FALSE;
3.5代码注释
●【规则3-5-1】边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。
不再有用的注释要删除!
●【规则3-5-2】如果代码本来就是清楚的,则不必加注释。
i++;//i加1,多余的注释
●【规则3-5-3】在代码的功能、意图层次上进行注释,提供有用、额外的信息。
//ifreceive_flagisTRUE
if(receive_flag)
//ifmtpreceiveamessagefromlinks
if(receive_flag)
无用注释有用注释
●【规则3-5-4】注释应与其描述的代码相邻。
对语句块的注释必须放在语句块上方;对单条语句、变量定义的注释可以放在上方或右方(建议放在右方);注释不可放在下方。
//getreplicatesubsystemindexandnetindicator
repssn_ind=ssn_data[index].repssn_index;
repssn_ni=ssn_data[index].ni;
不良写法一
repssn_ind=ssn_data[index].repssn_index;
repssn_ni=ssn_data[index].ni;
//getreplicatesubsystemindexandnetindicator
不良写法二
//getreplicatesubsystemindexandnetindicator
repssn_ind=ssn_data[index].repssn_index;
repssn_ni=ssn_data[index].ni;
良好的写法
●【规则3-5-5】如果注释放在上方,则将注释与其上面的代码用空行隔开。
//codeonecomments
programcodeone
//codetwocomments
programcodetwo
//codeonecomments
programcodeone
//codetwocomments
programcodetwo
过于紧凑良好写法
●【规则3-5-6】避免在一行代码或表达式的中间插入注释。
说明:
除非必要,不应在代码或表达中间插入注释,否则容易使代码可理解性变差。
●【规则3-5-7】对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。
说明:
这样比较清楚程序编写者的意图,有效防止无故遗漏break语句。
caseCMD_A:
ProcessA();
break;
caseCMD_B:
ProcessB();
//跳转到caseCMD_C
caseCMD_C:
ProcessC();
break;
●【规则3-5-8】注释与所描述内容进行同样的缩排。
说明:
可使程序排版整齐,并方便注释的阅读与理解。
voidexample_fun(void)
{
//codeonecomments
CodeBlockOne
//codetwocomments
CodeBlockTwo
}
voidexample_fun(void)
{
//codeonecomments
CodeBlockOne
//codetwocomments
CodeBlockTwo
}
不好的注释缩排良好的注释缩排
第四章命名
4.1通用命名规则
●【规则4-1-1