软件编码规范doc文档格式.docx

上传人:b****3 文档编号:18436904 上传时间:2022-12-16 格式:DOCX 页数:135 大小:134.34KB
下载 相关 举报
软件编码规范doc文档格式.docx_第1页
第1页 / 共135页
软件编码规范doc文档格式.docx_第2页
第2页 / 共135页
软件编码规范doc文档格式.docx_第3页
第3页 / 共135页
软件编码规范doc文档格式.docx_第4页
第4页 / 共135页
软件编码规范doc文档格式.docx_第5页
第5页 / 共135页
点击查看更多>>
下载资源
资源描述

软件编码规范doc文档格式.docx

《软件编码规范doc文档格式.docx》由会员分享,可在线阅读,更多相关《软件编码规范doc文档格式.docx(135页珍藏版)》请在冰豆网上搜索。

软件编码规范doc文档格式.docx

例:

commpub.hpp

BOOLIsChineseString(constchar*sInStr);

commpub.cpp

staticBOOLIsChineseChar(constchar*s)

{

……;

}

BOOLIsChineseString(constchar*sInStr)

for(intii=0;

ii<

strlen(sInStr);

ii++)

if(!

IsChineseChar(sInStr+ii))

{

returnFALSE;

}

returnTRUE;

规则4:

简单应用应创建下列目录结构,模块程序代码应分别放置到src/include目录与src/source目录,编译文件放置到src/source目录,编译后的可执行文件放置到rel/bin目录,静态库或动态库放置到rel/lib目录(应用使用的外部库及头文件放置在rel同级的lib与lib/include目录)。

规则5:

复杂应用应分子系统创建目录结构,模块程序代码应分别放置到src/module/include目录与src/module/source目录,应用编译文件放置到src目录,编译后的可执行文件放置到rel/bin目录,静态库或动态库放置到rel/lib目录。

(应用使用的外部库及头文件放置在rel同级的lib与lib/include目录)

规则6:

各子系统可以创建独立的编译文件并放置到src/module/source目录,编译后的可执行文件放置到rel/bin/module目录或rel/bin,静态库或动态库放置到rel/lib/module或rel/lib目录。

此时,应创建一个编译全部子系统的编译文件或脚本放置到src目录。

命名

规则7:

命名应遵循下列原则:

●应简单清晰通俗;

●应使用英文命名,禁止使用中文命名;

●应尽量选择通用词汇;

●应使用完整单词或词组,避免使用简称;

●应准确表达其含义;

●避免同时使用易混淆的字母与数字,如1与l,0与o;

●禁止使用只靠大小写区分的多个名称;

●多单词组成的名称,单词的首字母应大写,如FileName。

规则8:

名称太长超过15字符时应使用简称。

简称应遵循:

●应使用标准的或常用的简写,如Temp(tmp),Length(len);

●应用范围内简写应一致且规范,避免各处简写各不相同;

●简写可以使用单词的前一个或多个字母,如Channel(Chan)、Connect(Conn);

也可以使用去掉所有的不在词头的元音字母,如screen(scrn),primtive(prmv);

●多个单词组成的名称,使用有意义的单词或去掉无用的后缀并简称,如CountofFailure(FailCnt),PagingRequest(PagReq)。

一.1文件命名

规则9:

文件命名应使用模块名的小写字母形式。

禁止使用汉字或大、小写字母混用作为代码文件名。

一.2变量命名

规则10:

变量命名主要采用匈牙利命名法,格式为[作用域范围前缀_][前缀]基本类型+名称。

其中,作用域范围前缀、前缀以小写字母表示且可选,基本类型以小写字母表示且必选。

常用前缀符

前缀符

含义

例子

g_

全局变量

g_stSystem,g_cMacType,g_strSysName

s_

静态变量

s_nCurCnt,s_strStaticName,s_pSysTime

m_

类数据成员

m_nBankType,m_sWrkBuffer,m_strMyName

h

句柄类变量

hnFileHandle,hnSocket,hpProcHandle

p

指针类变量

psReadBuff,pstrRetStr,ppTarget

a

数组类变量

anPorts,asSendBuffers,apWrkBuffs

常用基本类型符

b

bool

bOK,bQuit,bFind

c、ch

char

cFlag,cBankType,chSubSystemType

s

char[]

sSysName,sStaticName,sTimeStr

str

CString、String

strSysName,strStaticName,strTimeStr

by

unsignchar[]

byMacStr,bySendBuffer,bySrcBuffer

n、i

int

nCnt,nPort,nRetCode

l

long

lFileSize,lOffset,lCount

d

double

dAmount,dSumVal,dWrkVal

f

float

fAmount,fSumVal,fWrkVal

ui/ul

unsignedint/long

uiCnt,uiFileSize,ulRetCount

w

WORD

与unsignedint等价的32位整数

dw

DOUBLEWORD

与unsignedlong等价的64位整数

em

枚举型变量

emDays,emColors,emSet

st

结构型编码

stSystem,stCtrlData,stSet

规则11:

禁止使用单字母作为变量名。

但下列常用单字母变量除外:

常用单字母变量

变量

类型

说明

i,j,k,m,n

循环变量

c

char

单字符变量

字符数组变量

x,y

位置变量

char*

指针变量

一.3常量与宏命名

规则12:

常量与宏应使用全大写名称,多词组名称使用_分隔各单词,并使用断行注释说明其含义如:

constintMAX_BUFF_SIZE=1024///<

最大存储区字节数

#defineMAX_FRAME_SIZE512///<

单帧的最大长度

规则13:

作为错误码或返回码的宏,应使用E_类型_NAME形式,并使用断行注释说明其含义。

#defineE_FILE_NOTFOUND61101001///<

文件不存在!

#defineE_DB_SELECT_FAIL62301050///<

选取数据库失败!

#defineE_SYS_INVALID_STATUS62301001///<

系统状态非法!

规则14:

作为编译条件的宏,应使用_<

NAME>

_形式。

如:

#ifdef_NONE_THROW_

#endif

#ifndef_FOR_CCPC_

规则15:

为防止重复包含而定义的头文件预处理宏,应使用__NAME_HPP__(C++)或__NAME_H__(C)形式,其中NAME为模块名称。

#ifndef__CSIGNAL_HPP__

#define__CSIGNAL_HPP__

#ifndef__CSIGNAL_H__

#define__CSIGNAL_H__

一.4类命名

规则16:

类命名应使用字符C|T+名称形式。

其中名称应使用名词或名词短语,且每个单词首字母大写。

CSignal,CFile,CString,CTagMgr。

一.5函数命名

规则17:

函数命名应使用能够表达函数功能的英文动词或动宾结构短语,且每个单词的首字母大写。

GetName(),StrTrimLeft(),KillProc()。

禁止在函数名称中使用非字母或数字的其他字符,如下划线_。

建议1:

不应在函数名中使用数字,如:

GetName1(),Kill2()。

但数字是短语一部分的,可以使用,如KillSigusr2()。

一.6参数命名

建议2:

函数或方法的参数命名参考变量命名,但应使用In,Out、Ret等简写修饰参数,增加函数声明的可读性。

BOOLIsSpaceStr(LPCSTRsInStr,ULONGnMaxLen=0,ULONG*plRetOffset=NULL);

voidHexToBin(LPCSTRsInStr,BYTE*psOutStr,ULONG*plRetSize=NULL);

注释

规则18:

程序代码中增加注释的目标是帮助对程序的阅读理解,不宜太多或太少,太多则会对阅读产生干扰,太少则不利于代码理解,因此只在必要的地方才加注释,且准确、易懂、简洁。

一.7文档化注释

一.7.1文件注释

规则19:

文件注释放置在文件头部,主要包括此文件的功能说明,编写人和修改人以及编写和修改的日期,版权声明,版本等信息,应尽量使用中文。

注释格式如下:

/**

*@filefilename.hpp

*@brief文件简要说明

*

*文件详细说明

*@author

*-时间作者1贡献1

*-时间作者2贡献2

*-时间作者3贡献3

*

*@version

*-时间版本1简要版本说明1

*-时间版本2简要版本说明2

*@par其他重要信息:

*其他重要信息说明

*

*@warning警告信息

*@par版权信息:

*版本声明信息

*/

*@filecsignal.hpp

*@briefUNIX信号函数封装类

*本类封装部分UNIX信号处理函数,简化在UNIX下编写信号处理程序的编码难度。

<

br>

*本类主要提供下列三类方法:

*-信号集合管理,提供信号集合的添加、删除、判断功能;

*-信号句柄管理,提供设置与获取信号处理函数功能;

*-信号处理,设置与获取阻塞信号集、发送信号、等待信号功能。

*@author

*-2007-03-05lny创建初始版本

*-2007-03-07lny添加文档注释信息

*@version

*-2007-03-05V1.0创建初始版本

*-2007-03-07V2.0添加文档注释信息

*@warning本类不能在WIN32操作系统使用。

*Copyright(C)2007-2007CNCC/CDC

*/

粗体字为需定制化的内容;

兰色字为可选的内容,如果没有这些内容,请删除。

下同。

一.7.2类注释

规则20:

类注释放置在类声明前,主要介绍类的功能及相关说明。

*@brief类简要说明

*类详细说明

*

*@par其他重要信息

*@par变更历史:

*-时间作者修改说明

*@briefUNIX信号处理函数封装类

*@warning本类不能在WIN32操作系统使用。

classCSignal

一.7.3函数或方法注释

规则21:

函数或方法注释放置在其声明前,主要介绍函数的功能、参数、返回值、异常、使用说明、范例、引用关系、变更信息等信息。

*@brief函数功能简要说明

*@param[in|out]参数名称1参数1简要说明;

*@param[in|out]参数名称2参数2简要说明。

*@return返回值说明

*-返回值1返回值1说明;

*-返回值2返回值2说明。

*@exception异常说明

*-异常1异常1说明;

*-异常2异常2说明。

*@note函数功能详细说明。

*-详细说明1;

*-详细说明2。

*@warning警告信息

*@deprecated函数即将失效警告

*@see引用说明

*@par使用范例:

*@code

*例子程序

*@endcode

*@par算法或流程说明:

*详细算法或流程说明

*@par变更历史:

*@brief添加一个或多个信号到信号集合。

*@param[out]stSet要操作的信号集合;

*@param[in]nSignal要添加到集合的信号;

*@param[in]nOtherSignal要添加到集合的其他信号。

*@return添加失败返回负整数,失败原因可以从errno获取。

*@note如果要添加多个信号,则必须使用0作为最后一个信号。

*@warning如果添加多个信号时没有使用0作结束,则程序可能异常中止!

*@seeDelFromSet()、AddAllToSet()、ClearSet()

*@par使用范例:

*intnRetCode=sig.AddToSet(&

stSet,SIGUSR1,SIGUSR2,0);

*if(nRetCode<

0){...Fail...}

*...

*nRetCode=sig.AddToSet(&

stSet,SIGHUP);

intAddToSet(sigset_t*stSet,intnSignal,intnOtherSignal=0,...);

建议3:

重要的或复杂的函数,应提供算法说明或使用范例。

*@brief根据行号与密码生成报尾校验码作为身份认证串。

*@param[in]sBankCode行号;

*@param[in]sPassword密码。

*@return身份认证串。

*@par算法介绍:

*-#计算sBankCode+sPassword的MD5数字摘要,输出32位字符;

*-#取32位字符的0,5,10,15,16,21,26,31位作16位字符串的偶数位;

*-#取"

AUTHBEPS"

各位作16位字符串的奇数位;

*-#加密这16位的字符串,得到32位的字符串作为认证串。

CStringBuildAuthStr(LPCSTRsBankCode,LPCSTRsPassword);

一.7.4数据成员注释

规则22:

类的每个数据成员均使用断行注释。

classCMTMsg

private:

BOOLm_bBodyInFile;

///<

是文件型报文?

CStringm_strFileName;

///<

文件型报文的文件名

CStringm_strBody;

直接设置的报体串

CMTMsgHeaderm_Header;

报头对象

CMTMsgTailm_Tail;

报尾对象

CMTBatHeaderm_BatHeader;

///<

批量业务头对象

一.7.5结构注释

规则23:

结构可使用简单注释,也可使用与类相同的注释格式,其数据成员使用断行注释。

/**报头结构,总长度138字节。

structCMTHeaderMap

charblockMark[3];

///<

报头块前缀={1:

charverID[1];

///<

版本号,保留=0。

charmesgLen[6];

报文总长度,保留,目前为空白。

charappTradeCode[8];

///<

业务码0位(系统号)1-3位CMT号4位节点5-7位保留。

charstartAddr[12];

报文源地址,即报文发起人。

chardestAddr[12];

报文目标地址,即报文接收人。

charmesgPurp[1];

报文用途,保留。

charoutForm[1];

输出标识,保留。

charmesgID[MSGID_LEN];

报文标识号,报文发起人生成,通信层唯一确定一个报文。

charmesgReqNo[REQUESTID_LEN];

///<

报文参考号,报文发起人生成,回应报文带回进行报文匹配。

charworkDate[8];

报文日期,格式为YYYYMMDD。

charsentTime[14];

报文时间,格式为YYYYMMDDHHMISS。

charexpTime[4];

报文有效期,保留,0-0xFFFF=65535。

chardeliTime[6];

报文提交时间,保留,格式为HHMISS。

charmesgPRI[1];

报文优先级,0x0-0xF=15。

charreserve[20];

保留域。

charfinalMark[1];

报头块后缀=}。

};

一.7.6宏与变量注释

规则24:

宏与变量使用简单注释或断行注释。

特别重要的宏可以使用与类相同的文档注释。

#defineMBT_PREFIX"

{"

报文块开始标志

#defineMBT_SUFFIX"

}"

报文块结束标志

#defineMBT_HEADER"

{1:

"

报头块开始标志

#defineMBT_BUSINESSHEADER"

{2:

业务头块开始标志

#defineMBT_BUSINESSDATA"

{3:

正文块开始标志

#defineMBT_TAIL"

{C:

报尾块开始标志

#defineMBT_FILE"

{F:

文件说明块开始标志

#defineMBT_BATHEADER"

{B:

批量信息块开始标志

#defineTAG_PREFIX"

:

TAG名开始标志

#defineTAG_SUFFIX"

TAG名结束标志

#defineMSGID_LEN20///<

报文标识号长度(MSGID)

#defineREQUESTID_LEN20///<

报文参考号长度(REQID)

/**业务头保留域长度*/

#defineCMTBH_RESERVED_LEN16

/**

*@brief短报文正文体最大长度。

*此长度应根据MQCMT类定义最大消息长度进行调整,超过此长度的报文应分为多个报文片断传输。

*@par计算公式:

*最大长度=MQCMT消息长度-sizeof(CMTMsgHeader)-sizeof(CMTMsgTail)-sizeof(MQMsg)+1

*=MQCMT最大消息长度-175

*目前,MQCMT类定义的最大消息长度为1M=1048576字节。

#defineSHORT_MSGBODY_MAX_LEN1000000

一.7.7文档注释技巧

建议4:

为使doxygen工具能生成更好的文档,编写文档注释时参考下列技巧:

●注释中使用的标识符前后均应留一个空格,以便doxygen识别此标识符,并自动生成一个引用连接。

*…

*@parCMT报文格式说明:

*-CMT报文由报头(CMTMsgHeader)、可选的批量业务头(CMTBatHeader)、正文体、报尾(CMTMsgTail)组成。

其中除正文体外,其余各块都是定长的;

*-正文体由一个或多个业务块组成。

每个业务块由一个定长的业务头(CMTBusinessHeader)与一个变长正文块(C

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1