编程规范和范例8263.docx

上传人:you****now 文档编号:52222012 上传时间:2022-10-21 格式:DOCX 页数:95 大小:186.02KB
返回 下载 相关 举报
编程规范和范例8263.docx_第1页
第1页 / 共95页
编程规范和范例8263.docx_第2页
第2页 / 共95页
点击查看更多>>
资源描述

《编程规范和范例8263.docx》由会员分享,可在线阅读,更多相关《编程规范和范例8263.docx(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、目 录1 排版62 注释113 标识符符命名184 可读性性205 变量、结结构226 函数、过过程287 可测性性368 程序效效率409 质量保保证4410 代码码编辑、编编译、审审查5011 代码码测试、维维护5212 宏53软件编程规范总则1 排版1 排版 1-1:程程序块要要采用缩缩进风格格编写,缩缩进的空空格数为为4个。说明:对于于由开发发工具自自动生成成的代码码可以有有不一致致。 1-2:相相对独立立的程序序块之间间、变量量说明之之后必须须加空行行。示例:如下下例子不不符合规规范。if (!vallid_ni(ni) . / proograam ccodeerepsssn_iin

2、d = sssn_dattaiindeex.reppssnn_inndexx;repsssn_nni = sssn_dattaiindeex.ni;应如下书写写if (!vallid_ni(ni) . / proograam ccodeerepsssn_iind = sssn_dattaiindeex.reppssnn_inndexx;repsssn_nni = sssn_dattaiindeex.ni; 1-3:较较长的语语句(80字字符)要要分成多多行书写写,长表表达式要要在低优优先级操操作符处处划分新新行,操操作符放放在新行行之首,划划分出的的新行要要进行适适当的缩缩进,使使排版整整齐,

3、语语句可读读。示例:perm_couunt_msgg.heead.lenn = NO77_TOO_STTAT_PERRM_CCOUNNT_LLEN + SSTATT_SIIZE_PERR_FRRAM * ssizeeof( _UUL );act_ttaskk_taableefrramee_idd * STAAT_TTASKK_CHHECKK_NUUMBEER + inndexx.ooccuupieed = sstatt_pooiiindeex.occcupiied;act_ttaskk_taableetaasknno.durratiion_truue_oor_ffalsse = SSYS_ge

4、tt_scccp_staatissticc_sttatee( sstatt_ittem );reporrt_oor_nnot_flaag = (tassknoo MAXX_ACCT_TTASKK_NUUMBEER) & (n7sstatt_sttat_iteem_vvaliid (staat_iitemm) & (actt_taask_tabbletassknoo.rresuult_datta != 00); 1-4:循循环、判判断等语语句中若若有较长长的表达达式或语语句,则则要进行行适应的的划分,长长表达式式要在低低优先级级操作符符处划分分新行,操操作符放放在新行行之首。示例:if (tas

5、sknoo maxx_acct_ttaskk_nuumbeer) & (n7sstatt_sttat_iteem_vvaliid (staat_iitemm) . / proograam ccodeefor (i = 0, j = 00; (i BuuffeerKeeywoordworrd_iindeex.worrd_llenggth) & (j NNewKKeywwordd.woord_lenngthh); i+, jj+) . / proograam ccodeefor (i = 0, j = 00; (i ffirsst_wwordd_leengtth) & (j ),后后不应加加空格。

6、说明:采用用这种松松散方式式编写代代码的目目的是使使代码更更加清晰晰。由于留空格格所产生生的清晰晰性是相相对的,所所以,在在已经非非常清晰晰的语句句中没有有必要再再留空格格,如果果语句已已足够清清晰则括括号内侧侧(即左括括号后面面和右括括号前面面)不需要要加空格格,多重重括号间间不必加加空格,因因为在CC/C+语言言中括号号已经是是最清晰晰的标志志了。在长语句中中,如果果需要加加的空格格非常多多,那么么应该保保持整体体清晰,而而在局部部不加空空格。给给操作符符留空格格时不要要连续留留两个以以上空格格。示例:(1) 逗逗号、分分号只在在后面加加空格。int aa, bb, cc; (2)比较较操

7、作符符, 赋值值操作符符=、 +=,算算术操作作符+、%,逻辑辑操作符符&、&,位域域操作符符= MAXX_TIIME_VALLUE) a = bb + c;a *= 2;a = bb 2;(3)!、+、-、&(地址址运算符符)等单单目操作作符前后后不加空空格。*p = a; / 内容操操作*与内内容之间间flag = !isEEmptty; / 非操作作!与内容容之间p = &memm; / 地址操操作& 与与内容之之间i+; / +,-与内容容之间(4)-、.前后不不加空格格。p-idd = pidd; / -指针针前后不不加空格格(5) iif、forr、whiile、swiitchh等

8、与后后面的括括号间应应加空格格,使iif等关关键字更更为突出出、明显显。if (aa = b & c d) 1-1:一一行程序序以小于于80字符符为宜,不不要写得得过长。仅供内部使用11软件编程规范总则2 注释2 注释 2-1:一一般情况况下,源源程序有有效注释释量必须须在200以上上。说明:注释释的原则则是有助助于对程程序的阅阅读理解解,在该该加的地地方都加加了,注注释不宜宜太多也也不能太太少,注注释语言言必须准准确、易易懂、简简洁。 2-2:说说明性文文件(如如头文件件.h文件件、.iinc文文件、.deff文件、编编译说明明文件.cfgg等)头头部应进进行注释释,注释释必须列列出:版版权

9、说明明、版本本号、生生成日期期、作者者、内容容、功能能、与其其它文件件的关系系、修改改日志等等,头文文件的注注释中还还应有函函数功能能简要说说明。示例:下面面这段头头文件的的头注释释比较标标准,当当然,并并不局限限于此格格式,但但上述信信息建议议要包含含在内。/* Coppyriightt (CC), 19888-119999, HHuawwei Tecch. Co., LLtd. Fille nnamee: / 文件件名 Autthorr: VVerssionn: Datte: / 作者、版版本及完完成日期期 Desscriiptiion: / 用于于详细说说明此程程序文件件完成的的主要功功

10、能,与与其他模模块 / 或函函数的接接口,输输出值、取取值范围围、含义义及参数数间的控控 / 制、顺顺序、独独立或依依赖等关关系 Othherss: / 其它它内容的的说明 Funnctiion Lisst: / 主要要函数列列表,每每条记录录应包括括函数名名及功能能简要说说明 11. . Hisstorry: / 修改改历史记记录列表表,每条条修改记记录应包包括修改改日期、修修改 / 者及及修改内内容简述述 11. DDatee: AAuthhor: MModiificcatiion: 22. .*/ 2-3:源源文件头头部应进进行注释释,列出出:版权权说明、版版本号、生生成日期期、作者者、

11、模块块目的/功能、主主要函数数及其功功能、修修改日志志等。示例:下面面这段源源文件的的头注释释比较标标准,当当然,并并不局限限于此格格式,但但上述信信息建议议要包含含在内。/* Coppyriightt (CC), 19888-119999, HHuawwei Tecch. Co., LLtd. FilleNaame: teest.cppp Autthorr: Verrsioon : Daate: Desscriiptiion: / 模模块描述述 Verrsioon: / 版版本信息息 Funnctiion Lisst: / 主主要函数数及其功功能 11. - Hisstorry: / 历历史

12、修改改记录 Daavidd 966/100/122 11.0 buuildd thhis mouudlee */说明:Deescrripttionn一项描描述本文文件的内内容、功功能、内内部各部部分之间间的关系系及本文文件与其其它文件件关系等等。Hiistoory是是修改历历史记录录列表,每每条修改改记录应应包括修修改日期期、修改改者及修修改内容容简述。 2-4:函函数头部部应进行行注释,列列出:函函数的目目的/功能、输输入参数数、输出出参数、返返回值、调调用关系系(函数数、表)等等。示例:下面面这段函函数的注注释比较较标准,当当然,并并不局限限于此格格式,但但上述信信息建议议要包含含在内。/

13、* Funnctiion: / 函数数名称 Desscriiptiion: / 函数数功能、性性能等的的描述 Callls: / 被本本函数调调用的函函数清单单 Callledd Byy: / 调用用本函数数的函数数清单 Tabble Acccesssed: / 被访访问的表表(此项项仅对于于牵扯到到数据库库操作的的程序) Tabble Upddateed: / 被修修改的表表(此项项仅对于于牵扯到到数据库库操作的的程序) Inpput: / 输入入参数说说明,包包括每个个参数的的作 / 用、取取值说明明及参数数间关系系。 Outtputt: / 对输输出参数数的说明明。 Retturnn:

14、/ 函数数返回值值的说明明 Othherss: / 其它它说明*/ 2-5:边边写代码码边注释释,修改改代码同同时修改改相应的的注释,以以保证注注释与代代码的一一致性。不不再有用用的注释释要删除除。 2-6:注注释的内内容要清清楚、明明了,含含义准确确,防止止注释二二义性。说明:错误误的注释释不但无无益反而而有害。规则2-77:避免免在注释释中使用用缩写,特特别是非非常用缩缩写。说明:在使使用缩写写时或之之前,应应对缩写写进行必必要的说说明。 2-8:注注释应与与其描述述的代码码相近,对对代码的的注释应应放在其其上方或或右方(对对单条语语句的注注释)相相邻位置置,不可可放在下下面,如如放于上上

15、方则需需与其上上面的代代码用空空行隔开开。示例:如下下例子不不符合规规范。例1:/* geet rrepllicaate subb syysteem iindeex aand nett inndiccatoor */repsssn_iind = sssn_dattaiindeex.reppssnn_inndexx;repsssn_nni = sssn_ddataainndexx.nni;例2:repsssn_iind = sssn_dattaiindeex.reppssnn_inndexx;repsssn_nni = sssn_ddataainndexx.nni;/* geet rreplli

16、caate subb syysteem iindeex aand nett inndiccatoor */应如下书写写/* geet rrepllicaate subb syysteem iindeex aand nett inndiccatoor */repsssn_iind = sssn_dattaiindeex.reppssnn_inndexx;repsssn_nni = sssn_ddataainndexx.nni; 2-9:对对于所有有有物理理含义的的变量、常常量,如如果其命命名不是是充分自自注释的的,在声声明时都都必须加加以注释释,说明明其物理理含义。变变量、常常量、宏宏的注释释应

17、放在在其上方方相邻位位置或右右方。示例:/* acctivve sstattisttic tassk nnumbber */#defiine MAXX_ACCT_TTASKK_NUUMBEER 110000#defiine MAXX_ACCT_TTASKK_NUUMBEER 110000 /* acctivve sstattisttic tassk nnumbber */ 2-10:数据结结构声明明(包括数数组、结结构、类类、枚举举等),如果果其命名名不是充充分自注注释的,必必须加以以注释。对对数据结结构的注注释应放放在其上上方相邻邻位置,不不可放在在下面;对结构构中的每每个域的的注释放放在此

18、域域的右方方。示例:可按按如下形形式说明明枚举/数据/联合结结构。/* scccp intterffacee wiith scccp uuserr prrimiitivve mmesssagee naame */enum SCCCP_USEER_PPRIMMITIIVE NN_UNNITDDATAA_INND, /* scccp nnotiify scccp uuserr unnit datta ccomee */ NN_NOOTICCE_IIND, /* scccp nnotiify useer tthe No.7 nnetwworkk caan nnot */ /* traansmmiss

19、sionn thhis messsagge */ NN_UNNITDDATAA_REEQ, /* scccp uuserrs uniit ddataa trranssmisssioon rrequuestt*/; 2-11:全局变变量要有有较详细细的注释释,包括括对其功功能、取取值范围围、哪些些函数或或过程存存取它以以及存取取时注意意事项等等的说明明。示例:/* Thhe EErroorCoode wheen SSCCPP trransslatte */* Gllobaal TTitlle ffailluree, aas ffolllowss */ / 变量作作用、含含义/* 0 SUUCCE

20、ESS 11 GTT Taablee errrorr */* 2 GTT errrorr OOtheers noo usse */ / 变量取取值范围围/* onnly fuuncttionn SSCCPPTraansllatee() in */* thhis modduall caan mmodiify it, aand ottherr */* moodulle ccan vissit it thrrouggh ccalll */* thhe funnctiion GettGTTTrannsErrrorrCodde() */ / 使用用方法BYTE g_GGTTrranEErroorCood

21、e; 2-12:注释与与所描述述内容进进行同样样的缩排排。说明:可使使程序排排版整齐齐,并方方便注释释的阅读读与理解解。示例:如下下例子,排排版不整整齐,阅阅读稍感感不方便便。void exaamplle_ffun( vooid )/* coode onee coommeentss */ CCodeeBloock Onee /* codde ttwo commmennts */ CCodeeBloock Twoo应改为如下下布局。void exaamplle_ffun( vooid ) /* ccodee onne ccommmentts */ CCodeeBloock Onee /* cco

22、dee twwo ccommmentts */ CCodeeBloock Twoo 2-13:将注释释与其上上面的代代码用空空行隔开开。示例:如下下例子,显显得代码码过于紧紧凑。/* coode onee coommeentss */progrram codde oone/* coode twoo coommeentss */progrram codde ttwo应如下书写写/* coode onee coommeentss */progrram codde oone/* coode twoo coommeentss */progrram codde ttwo 2-14:对变量量的定义义和分支

23、支语句(条条件分支支、循环环语句等等)必须须编写注注释。说明:这些些语句往往往是程程序实现现某一特特定功能能的关键键,对于于维护人人员来说说,良好好的注释释帮助更更好的理理解程序序,有时时甚至优优于看设设计文档档。 2-15:对于sswittch语语句下的的casse语句句,如果果因为特特殊情况况需要处处理完一一个caase后后进入下下一个ccasee处理,必必须在该该casse语句句处理完完、下一一个caase语语句前加加上明确确的注释释。说明:这样样比较清清楚程序序编写者者的意图图,有效效防止无无故遗漏漏breeak语语句。示例(注意意斜体加加粗部分分):case CMDD_UPP: PP

24、roccesssUp(); bbreaak;case CMDD_DOOWN: PProccesssDowwn(); bbreaak;case CMDD_FWWD: PProccesssFwdd(); if (.) . bbreaak;else PProccesssCFWW_B(); / nnow jummp iintoo caase CMDD_Acase CMDD_A: PProccesssA(); bbreaak;case CMDD_B: PProccesssB(); bbreaak;case CMDD_C: PProccesssC(); brreakk;case CMDD_D: PProc

25、cesssD(); bbreaak;. 2-1:避避免在一一行代码码或表达达式的中中间插入入注释。说明:除非非必要,不不应在代代码或表表达中间间插入注注释,否否则容易易使代码码可理解解性变差差。 2-2:通通过对函函数或过过程、变变量、结结构等正正确的命命名以及及合理地地组织代代码的结结构,使使代码成成为自注注释的。说明:清晰晰准确的的函数、变变量等的的命名,可可增加代代码可读读性,并并减少不不必要的的注释。 2-3:在在代码的的功能、意意图层次次上进行行注释,提提供有用用、额外外的信息息。说明:注释释的目的的是解释释代码的的目的、功功能和采采用的方方法,提提供代码码以外的的信息,帮帮助读者者

26、理解代代码,防防止没必必要的重重复注释释信息。示例:如下下注释意意义不大大。/* iff reeceiive_flaag iis TTRUEE */if (rreceeivee_fllag)而如下的注注释则给给出了额额外有用用的信息息。 /* iff mttp rreceeivee a messsagge ffromm liinkss */if (rreceeivee_fllag) 2-4:在在程序块块的结束束行右方方加注释释标记,以以表明某某程序块块的结束束。说明:当代代码段较较长,特特别是多多重嵌套套时,这这样做可可以使代代码更清清晰,更更便于阅阅读。示例:参见见如下例例子。if (.)

27、/ pproggramm coode wwhille (inddex MMAX_INDDEX) / proograam ccodee /* ennd oof wwhille (inddex MMAX_INDDEX) */ / 指明明该条wwhille语句句结束 /* endd off iif (.)*/ / 指明明是哪条条if语句句结束 2-5:注注释格式式尽量统统一,建建议使用用“/* */”。 2-6:注注释应考考虑程序序易读及及外观排排版的因因素,使使用的语语言若是是中、英英兼有的的,建议议多使用用中文,除除非能用用非常流流利准确确的英文文表达。说明:注释释语言不不统一,影影响程序序易读

28、性性和外观观排版,出出于对维维护人员员的考虑虑,建议议使用中中文。仅供内部使用24软件编程规范总则3 标志符命名3 标识符符命名 3-1:标标识符的的命名要要清晰、明明了,有有明确含含义,同同时使用用完整的的单词或或大家基基本可以以理解的的缩写,避避免使人人产生误误解。说明:较短短的单词词可通过过去掉“元音”形成缩缩写;较较长的单单词可取取单词的的头几个个字母形形成缩写写;一些些单词有有大家公公认的缩缩写。示例:如下下单词的的缩写能能够被大大家基本本认可。temp 可缩写写为 tmpp ;flag 可缩写写为 flgg ;statiistiic 可可缩写为为 sstatt ;increemen

29、nt 可可缩写为为 iinc ;messaage 可缩写写为 msgg ; 3-2:命命名中若若使用特特殊约定定或缩写写,则要要有注释释说明。说明:应该该在源文文件的开开始之处处,对文文件中所所使用的的缩写或或约定,特特别是特特殊的缩缩写,进进行必要要的注释释说明。 3-3:自自己特有有的命名名风格,要要自始至至终保持持一致,不不可来回回变化。说明:个人人的命名名风格,在在符合所所在项目目组或产产品组的的命名规规则的前前提下,才才可使用用。(即即命名规规则中没没有规定定到的地地方才可可有个人人命名风风格)。 3-4:对对于变量量命名,禁禁止取单单个字符符(如ii、j、k.),建建议除了了要有具

30、具体含义义外,还还能表明明其变量量类型、数数据类型型等,但但i、j、k作局部部循环变变量是允允许的。说明:变量量,尤其其是局部部变量,如如果用单单个字符符表示,很很容易敲敲错(如如i写成j),而而编译时时又检查查不出来来,有可可能为了了这个小小小的错错误而花花费大量量的查错错时间。示例:下面面所示的的局部变变量名的的定义方方法可以以借鉴。int lliv_Widdth其变量名解解释如下下:l 局部部变量(Local) (其它:g 全局变量(Global).)i 数据据类型(Interger)v 变量量(Vaariaablee) (其它它:c 常量(CConsst).)Widdth 变量量含义这

31、样可以防防止局部部变量与与全局变变量重名名。 3-5:命命名规范范必须与与所使用用的系统统风格保保持一致致,并在在同一项项目中统统一,比比如采用用UNIIX的全全小写加加下划线线的风格格或大小小写混排排的方式式,不要要使用大大小写与与下划线线混排的的方式,用用作特殊殊标识如如标识成成员变量量或全局局变量的的m_和g_,其其后加上上大小写写混排的的方式是是允许的的。示例: AAdd_Useer不允允许,aadd_useer、AdddUseer、m_AAddUUserr允许。 3-1:除除非必要要,不要要用数字字或较奇奇怪的字字符来定定义标识识符。示例:如下下命名,使使人产生生疑惑。#defiin

32、e _EXXAMPPLE_0_TTESTT_#defiine _EXXAMPPLE_1_TTESTT_void sett_slls000( BBYTEE slls );应改为有意意义的单单词命名名#defiine _EXXAMPPLE_UNIIT_TTESTT_#defiine _EXXAMPPLE_ASSSERTT_TEEST_void sett_uddt_mmsg_slss( BBYTEE slls ); 3-2:在在同一软软件产品品内,应应规划好好接口部部分标识识符(变变量、结结构、函函数及常常量)的的命名,防防止编译译、链接接时产生生冲突。说明:对接接口部分分的标识识符应该该有更严严格

33、限制制,防止止冲突。如如可规定定接口部部分的变变量与常常量之前前加上“模块”标识等等。 3-3:用用正确的的反义词词组命名名具有互互斥意义义的变量量或相反反动作的的函数等等。说明:下面面是一些些在软件件中常用用的反义义词组。add / reemovve bbegiin / ennd creeatee / desstrooy inserrt / deelette ffirsst / laast gett / relleasseincreemennt / deecreemennt putt / gettadd / deelette llockk / unllockk opeen / cllosee

34、min / maax oold / nnew staart / sstoppnext / pprevviouus ssourrce / ttargget shoow / hiidesend / rreceeivee ssourrce / ddesttinaatiooncut / paastee uup / doown示例:int minn_suum;int maxx_suum;int addd_usser( BYYTE *usser_namme );int delletee_usser( BYYTE *usser_namme ); 3-4:除除了编译译开关/头文件件等特殊殊应用,应应避免使使用_EEXAMMPLEE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理手册

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁