最新软件编码规范doc汇编.docx

上传人:b****2 文档编号:2261360 上传时间:2023-05-03 格式:DOCX 页数:148 大小:186.84KB
下载 相关 举报
最新软件编码规范doc汇编.docx_第1页
第1页 / 共148页
最新软件编码规范doc汇编.docx_第2页
第2页 / 共148页
最新软件编码规范doc汇编.docx_第3页
第3页 / 共148页
最新软件编码规范doc汇编.docx_第4页
第4页 / 共148页
最新软件编码规范doc汇编.docx_第5页
第5页 / 共148页
最新软件编码规范doc汇编.docx_第6页
第6页 / 共148页
最新软件编码规范doc汇编.docx_第7页
第7页 / 共148页
最新软件编码规范doc汇编.docx_第8页
第8页 / 共148页
最新软件编码规范doc汇编.docx_第9页
第9页 / 共148页
最新软件编码规范doc汇编.docx_第10页
第10页 / 共148页
最新软件编码规范doc汇编.docx_第11页
第11页 / 共148页
最新软件编码规范doc汇编.docx_第12页
第12页 / 共148页
最新软件编码规范doc汇编.docx_第13页
第13页 / 共148页
最新软件编码规范doc汇编.docx_第14页
第14页 / 共148页
最新软件编码规范doc汇编.docx_第15页
第15页 / 共148页
最新软件编码规范doc汇编.docx_第16页
第16页 / 共148页
最新软件编码规范doc汇编.docx_第17页
第17页 / 共148页
最新软件编码规范doc汇编.docx_第18页
第18页 / 共148页
最新软件编码规范doc汇编.docx_第19页
第19页 / 共148页
最新软件编码规范doc汇编.docx_第20页
第20页 / 共148页
亲,该文档总共148页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

最新软件编码规范doc汇编.docx

《最新软件编码规范doc汇编.docx》由会员分享,可在线阅读,更多相关《最新软件编码规范doc汇编.docx(148页珍藏版)》请在冰点文库上搜索。

最新软件编码规范doc汇编.docx

最新软件编码规范doc汇编

(1)定义:

顶点都在同一圆上的正多边形叫做圆内接正多边形,这个圆叫做该正多边形的外接圆.

③增减性:

若a>0,当x<时,y随x的增大而减小;当x>时,y随x的增大而增大。

|a|的越大,抛物线的开口程度越小,越靠近对称轴y轴,y随x增长(或下降)速度越快;

若a<0,则当x<时,y随x的增大而增大;当x>时,y随x的增大而减小。

(2)两锐角的关系:

∠A+∠B=90°;

(三)实践活动

1.正切:

推论:

在同圆或等圆中,如果两个圆心角、两条弧、两条弦或两条弦的弦心距中有一组量相等,那么它们所对应的其余各组量都分别相等.

9、向40分钟要质量,提高课堂效率。

2.点与圆的位置关系及其数量特征:

 

软件编码规范

 

 

文件状态:

[√]草稿

[]正式发布

[]正在修改

文件编号:

RDC-DED-SCS-SPC-00

当前版本:

作者:

审核人:

完成日期:

 

中国人民银行清算总中心

支付系统开发中心

 

文档修订记录

版本编号

变化状态

简要说明

日期

变更人

批准日期

批准人

注:

变化状态:

A—增加,M—修改,D—删除

目录

第一篇C/C++编码规范6

第一章代码组织6

第二章命名9

2.1文件命名9

2.2变量命名9

2.3常量与宏命名10

2.4类命名10

2.5函数命名10

2.6参数命名11

第三章注释12

3.1文档化注释12

3.2语句块注释17

3.3代码维护注释20

第四章编码风格22

4.1排版风格22

4.2头文件26

4.3宏定义27

4.4变量与常量30

4.5条件判断32

4.6空间申请与释放33

4.7函数编写33

4.8类的编写37

4.9异常处理40

4.10特殊限制40

第五章编译41

第六章ESQL/C编码46

第二篇Java编码规范47

第一章代码组织48

第二章命名51

2.1包命名51

2.2类命名51

2.3接口命名51

2.4方法命名51

2.5变量命名51

2.6类变量命名52

2.7常量命名52

2.8参数命名52

第三章注释53

3.1文档化注释53

3.2语句块注释57

3.3代码维护注释59

第四章编码风格61

4.1排版风格61

4.2包与类引用66

4.3变量与常量66

4.4类编写67

4.5方法编写68

4.6异常处理71

4.7特殊限制71

第五章编译73

第六章JSP编码74

6.1文件命名及存放位置74

6.2内容组织74

6.3编码风格76

6.4注释78

6.5缩进与对齐78

6.6表达式79

6.7JavaScript79

第三篇PowerBuilder编码规范80

第一章代码组织81

第二章命名82

2.1文件命名82

2.2对象命名82

2.3变量命名84

2.4常量命名85

2.5函数与事件命名85

2.6参数命名85

第三章注释85

3.1文档化注释85

3.2语句块注释88

3.3代码维护注释88

第四章编码风格89

4.1界面风格89

4.2排版风格93

4.3变量与常量95

4.4条件判断96

4.5空间申请与释放97

4.6函数编写97

4.7特殊限制97

第五章SQL编码98

前言

程序编码是一种艺术,既灵活又严谨,充满了创造性与奇思妙想。

然而应用软件设计是一项团结协作工程,而非程序员展示个人艺术的舞台,大型应用软件项目更是由很多程序员组成的大型开发团队协同完成的。

每个程序员都有自己的编码经验与风格,如果缺乏统一的编程规范,则可能导致软件产品最终程序代码风格迥异,可读性与可维护性均较差,不仅给程序代码的理解带来障碍,也增加维护阶段的工作量。

此外,经验证明不规范的编码行为往往还会导致程序出现更多的隐含错误。

为规范编码行为,增强程序代码的可读性、可维护性,提高编码质量与效率,保障应用软件产品整体品质与可持续开发性,特制定本规范。

本规范分C/C++编码规范、Java编码规范、PB编码规范三篇,分别从代码组织、命名、注释、编码风格、编译等方面加以阐述。

规范文本分为规则与建议两种,其中规则是强制执行的条款,建议则由程序员根据实际情况灵活掌握。

C/C++编码规范

代码组织

规则1:

使用不同的文件分别放置模块的约束与实现。

C++程序的约束文件使用.hpp做扩展名,实现文件使用.cpp做扩展名;C程序的约束文件使用.h做扩展名,实现文件使用.c做扩展名。

规则2:

一个模块可以包含一个类或功能上紧密联系的多个类。

禁止将功能关联松散的多个类,放置到一个模块中。

规则3:

模块约束应仅包含模块对外提供的功能,禁止将模块内部使用的功能声明在模块约束中。

下例中IsChineseChar()是内部使用的函数,不提供给外部应用使用,因此不能在commpub.hpp中增加声明。

例:

commpub.hpp

BOOLIsChineseString(constchar*sInStr);

例:

commpub.cpp

staticBOOLIsChineseChar(constchar*s)

{

……;

}

BOOLIsChineseString(constchar*sInStr)

{

for(intii=0;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

int

循环变量

c

char

单字符变量

s

char[]

字符数组变量

x,y

int

位置变量

p

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:

作为编译条件的宏,应使用__形式。

如:

#ifdef_NONE_THROW_

#endif

#ifndef_FOR_CCPC_

#endif

规则15:

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

如:

#ifndef__CSIGNAL_HPP__

#define__CSIGNAL_HPP__

#endif

#ifndef__CSIGNAL_H__

#define__CSIGNAL_H__

#endif

一.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下编写信号处理程序的编码难度。


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

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

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

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

*

*@author

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

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

*@version

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

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

*

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

*

*@par版权信息:

*Copyright(C)2007-2007CNCC/CDC

*/

注:

粗体字为需定制化的内容;兰色字为可选的内容,如果没有这些内容,请删除。

下同。

一.7.2类注释

规则20:

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

注释格式如下:

/**

*@brief类简要说明

*

*类详细说明

*

*@par其他重要信息

*其他重要信息说明

*

*@par变更历史:

*-时间作者修改说明

*/

例:

/**

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

*

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


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

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

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

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

*

*@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使用范例:

*@code

*intnRetCode=sig.AddToSet(&stSet,SIGUSR1,SIGUSR2,0);

*if(nRetCode<0){...Fail...}

*...

*nRetCode=sig.AddToSet(&stSet,SIGHUP);

*if(nRetCode<0){...Fail...}

*@endcode

*/

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。

chardeliT

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2