版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浅谈C++规范化编程规范化编程的意义※对于团队开发每个人都有自己的想法,每个人都有自己的代码风格,如果没有一个约束大家的规范,整个项目的开发必然一团糟。为了能够使整个项目能够正常地进行,并且保证项目质量,我们需要规范化的编程。
※对于小型项目
在座的同事,都能按照项目的需求,在项目交付日期前,完成软件的开发工作。所以从技术上来说,各位都算得上是高手。※项目的延续性、可读性也要求进行规范,便于后续的维护管理。规范化编程——排版规则1:程序块要采用缩进风格编写,缩进
的空格数为4个,不要使用Tab缩进,因为不同的编辑器会有不同的解释。说明:由开发工具自动生成的代码可以不一致。规则2:缩进或者对齐只能使用空格键,不可使用TAB键。Tab配置:工具—>选项—>文本编辑器—>C/C++—>制表符规范化编程——排版规范化编程——排版规则3:相对独立的块之间、变量说明之后必须加空行。说明:以下情况应该用空行隔开1)函数之间应该用空行分开;2)变量声明应尽可能靠近第一次使用处,避免一次性声明一组没有马上使用的变量;3)用空行将代码按照逻辑片断划分;4)每个类声明之后应该加入空格同其他代码分开。规范化编程——排版示例:规范化编程——排版规则4:较长的语句(>80字符)要分成多行书写。说明,以下情况应分多行书写:1)长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。2)若函数或过程中的参数较长,则要进行适当的划分。3)循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。规范化编程——排版规范化编程——排版规则5:不允许把多个短语句写在一行,一行只写一条语句。说明:一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。
规则6:if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。规范化编程——排版建议7:代码行之内应该留有适当的空格说明:采用这种松散方式编写代码的目的是使代码更加清晰。代码行内应该适当的使用空格,具体如下:
1)关键字之后要留空格。象const、virtual、inline、case等关键字之后至少要留一个空格,否则无法辨析关键字。象if、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。
2)函数名之后不要留空格,紧跟左括号’(’,以与关键字区别。
3)‘(’向后紧跟,‘)’、‘,’、‘;’向前紧跟,紧跟处不留空格。
4)‘,’之后要留空格,如Function(x,y,z)。如果‘;’不是一行的结束符号,其后也要留空格,如for(initialization;condition;update)。
5)值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=”
“>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”、“^”等二元操作符的前后应当加空格。
6)一元操作符如“!”、“~”、“++”、“--”、“&”(地址运算符)等前后不加空格。
7)象“[]”、“.”、“->”这类操作符前后不加空格。8)对于表达式比较长的for语句和if语句,为了紧凑起见可以适当地去掉一些空格,如for(inti=0;i<10;++i)规范化编程——排版建议8:程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式规范化编程——注释注释的原则:
有助于对程序的阅读理解,在该加的地方都要加,注释不宜太多也不太少,一般情况下,源程序的有效注释量应该在20%以上。注释语言必须准确、易懂、简洁。注释语言在同一项目中必须一致,不能中英混杂(对英文缩写的英文注释除外)。规范化编程——注释规则1:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释。注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。在实际工作中,每个类的函数不会太多,函数列表可以省略,只要写清楚函数的注释就行。规范化编程——注释规则2:源文件头部应进行注释,列出:生成日期、作者、模块目的/功能等。说明:同样的,函数列表建议可以省略,但是函数的注释要写清楚。示例:下面这段源文件的头注释比较标准,可以不局限于此格式,但上述信息要包含在内。/*********************************************************Copyright(C),1988-1999,SynthesisCo.,Ltd.FileName:test.cppAuthor://编写人Version://版本号Date://生成日期Description://模块描述Version://版本信息FunctionList://主要函数及其功能1.-------History://历史修改记录<author><time><version><desc>David96/10/121.0buildthismoudle********************************************************/规范化编程——注释规则3:函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。示例:同样的,建议普通函数可以不用注释红色部分。/**********************************************Function://函数名称Description://函数功能、性能等的描述Calls://被本函数调用的函数清单CalledBy://调用本函数的函数清单TableAccessed://被访问的表(此项仅对于牵扯到数据库操作的程序)TableUpdated://被修改的表(此项仅对于牵扯到数据库操作的程序)Input://输入参数说明,包括每个参数的作用、取值说明及参数间关系。Output://对输出参数的说明。Return://函数返回值的说明Others://其它说明**********************************************/规范化编程——注释规则3:注释应该和代码同时更新,不再有用的注释要删除。规则4:注释的内容要清楚、明了,不能有二义性.规则5:避免在注释中使用非常用的缩写或者术语。建议6:注释的主要目的应该是解释为什么这么做,而不是正在做什么。建议7:避免非必要的注释。ClassA*pA=newClassA();//创建新实例规范化编程——注释规则8:注释的版式说明:注释也需要与代码一样整齐排版1)注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。2)注释与所描述内容进行同样的缩排。3)将注释与其上面的代码用空行隔开。4)变量、常量、宏的注释应放在其上方相邻位置或右方。示例:如下例子不符合规范。规范化编程——注释规范化编程——注释规则9:对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。规则10:数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释可放在此域的右方。建议11:对重要变量的定义需编写注释,特别是全局变量,更应有较详细的注释,包括对其功能、取值范围、以及存取时注意事项等的说明。规范化编程——注释规则12:分支语句(条件分支、循环语句等)需编写注释。说明:这些语句往往是程序实现某一特定功能的关键,对于维护人员来说,良好的注释帮助更好的理解程序,有时甚至优于看设计文档。规则13:对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。说明:这样比较清楚程序编写者的意图,有效防止无故遗漏break语句。规范化编程——注释规则14:避免在一行代码或表达式的中间插入注释。规则15::通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的。说明:清晰准确的函数、变量等的命名,可增加代码可读性,并减少不必要的注释。规则16:在代码的功能、意图层次上进行注释,提供有用、额外的信息。说明:注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。规则17:在程序块的结束行右方加注释标记,以表明某程序块的结束。说明:当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读。规则18:注释格式应统一,单独的注释使用“/*……*/”,代码行中的注释使用“//”。使用“//”时,应在“//”与注释内容之间增加一个空格。Somecode//
注释
此处应有空格
规范化编程——标识符命名比较著名的命名规则当推Microsoft公司的“匈牙利”法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p。如果一个变量由ppch开头,则表明它是指向字符指针的指针。“匈牙利”法最大的缺点是烦琐,例如inti,j,k;floatx,y,z;倘若采用“匈牙利”命名规则,则应当写成intiI,iJ,ik;//前缀i表示int类型floatfX,fY,fZ;//前缀f表示float类型据考察,没有一种命名规则可以让所有的程序员赞同,程序设计教科书一般都不指定命名规则。命名规则对软件产品而言并不是“成败悠关”的事。我们不要化太多精力试图发明世界上最好的命名规则,而应当制定一种令大多数项目成员满意的命名规则,并在项目中贯彻实施。但是毫无争议的,“匈牙利”法还是被应用最多的,建议使用。规范化编程——标识符命名规则1:命名尽量使用英文单词,力求简单清楚,避免使用引起误解的词汇和模糊的缩写,使人产生误解。较长的单词可取单词的头几个字母形成缩写;如一些单词有大家公认的缩写。规范化编程——标识符命名规则2:命名规范必须与所使用的系统风格保持一致,并在同一项目中统一。说明:1)如在UNIX系统,可采用全小写加下划线的风格或大小写混排的方式,但不能使用大小写与下划线混排的方式。2)用作特殊标识如标识成员变量或全局变量的m_和g_,其后加上大小写混排的方式是允许的。规范化编程——标识符命名规则3:常量、宏和模板名采用全大写的方式,每个单词间用下划线分隔。建议4:枚举类型enum常量应以大写字母开头或全部大写。建议5:命名中若使用了特殊约定或缩写,则要有注释说明。说明:应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。规则6:自己特有的命名风格,要自始至终保持一致,不可来回变化。说明:个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。(即命名规则中没有规定到的地方才可有个人命名风格)。规则7:对于变量命名,禁止取单个字符(如i、j、k...),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是允许的。说明:变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。规范化编程——可读性规则1:注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。规则2:避免使用“魔数”,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。规则3:源程序中关系较为紧密的代码应尽可能相邻.说明:便于程序阅读和查找。建议4:不要使用难懂的技巧性很高的语句,除非很有必要时。说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于算法。规范化编程——可读性魔数(magicnumber),即在编写程序时直接在程序中运用数字,而不是采用定义宏或是const变量的方式.规范化编程——可读性规范化编程——可读性条件运算符规范化编程——可读性如下表达式,考虑不周就可能出问题,也较难理解。*stat_poi+++=1;*++stat_poi+=1;应分别改为如下:*stat_poi+=1;stat_poi++;//此二语句相当于“*stat_poi+++=1;”++stat_poi;*stat_poi+=1;//此二语句相当于“*++stat_poi+=1;”规范化编程——其他关于变量和结构、函数和过程的相关编程规范,详见《神思公司软件编程规范》文档。在此,不再赘述。规范化编程——其他编程建议※建议1:使用const提高函数的健壮性。const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书籍建议:“Useconstwheneveryouneed”1)用const修饰函数的参数(输入参数)2)用const修饰函数的返回值3)const成员函数规范化编程——其他编程建议※建议2:提高程序的效率。程序的时间效率是指运行速度,空间效率是指程序占用内存或者外存的状况。全局效率是指站在整个系统的角度上考虑的效率,局部效率是指站在模块或函数角度上考虑的效率规范化编程——其他编程建议关于提高程序效率的六条建议1)不要一味地追求程序的效率,应当在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率。2)以提高程序的全局效率为主,提高局部效率为辅。3)在优化程序的效率时,应当先找出限制效率的“瓶颈”,不要在无关紧要之处优化。4)先优化数据结构和算法,再优化执行代码。5)有时候时间效率和空间效率可能对立,此时应当分析那个更重要,作出适当的折衷。例如多花费一些内存来提高性能。6)不要追求紧凑的代码,因为紧凑的代码并不能产生高效的机器码,返回会影响程序的清晰可读性。规范化编程——其他编程建议※建议3:其他有益于程序编写的建议1)当心那些视觉上不易分辨的操作符发生书写错误。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仁爱英语单元、话题同步测试题-七年级上册
- 2024年出售杉木方木合同范本
- 2024年出售电泳漆设备合同范本
- 2024年承接土地转让合同范本
- 辽宁省七校2024-2025学年高二上学期11月期中联考语文试题(含答案)
- 中国石油行业金融季度研究报告2012年二
- 基于底盘测功机的纯电动汽车续航测试
- 2024工程承包合同协议书下载
- 2024至2030年中国星彩轮行业投资前景及策略咨询研究报告
- 2024年计算机网络设备项目评价分析报告
- 质量总监考核表
- 台背填土现场质量检验报告单
- JJF(电子)0036-2019 示波器电流探头校准规范-(高清现行)
- 2020心肌梗死后心力衰竭防治专家共识课件
- 蓄水池防水施工方案
- 隧道的衬砌计算(85页清楚明了)
- 人教版八年级(初二)数学上册全册课件PPT
- Q∕GDW 10202-2021 国家电网有限公司应急指挥中心建设规范
- CNAS-CL01:2018(ISO17025:2017)改版后实验室首次内审及管理评审资料汇总
- 护理不良事件-PPT课件
- 商业银行两地三中心数据容灾备份方案建议书
评论
0/150
提交评论