CMMI- 软件开发代码编程规范模板下载.docx

上传人:D****n 文档编号:4258146 上传时间:2021-07-05 格式:DOCX 页数:46 大小:129.54KB
返回 下载 相关 举报
CMMI- 软件开发代码编程规范模板下载.docx_第1页
第1页 / 共46页
CMMI- 软件开发代码编程规范模板下载.docx_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《CMMI- 软件开发代码编程规范模板下载.docx》由会员分享,可在线阅读,更多相关《CMMI- 软件开发代码编程规范模板下载.docx(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、广东技术股份有限公司编 程 规 范文件编号HW-SP-IMPT-G01文件状态 草稿 正式发布 正在修改当前版本V1.0拟 制张三日期年 月 日审 核李四日期年 月 日批 准王五日期年 月 日发布日期年 月 日生效日期 年 月 日广东技术股份有限公司修订历史记录 A - 增加 M - 修订 D - 删除变更版本号日期变更类型(A*M*D)修改人摘 要备注1.0A建立编程规范目 录1目的42使用范围43C/C+编程规范43.1文件结构43.2程序的版式83.3命名规则143.4缩进规则174JAVA编程规范194.1代码组织与风格194.2注解204.3命名224.4声明244.5表达式和语句2

2、54.6错误处理和异常事件254.7可移植性254.8复用251 目的定义组织的C/C+,JAVA编程规范,以提高程序的可读性、可靠性。2 使用范围适合于公司采用C/C+、JAVA编程语言开发的所有软件项目。3 C/C+编程规范3.1 文件结构每个C/C+程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。C/C+程序的头文件以“.h”为后缀,C 程序的定义文件以“.c”为后缀,C+程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”

3、为后缀,这里以Windows平台为准)。3.1.1 版权和版本的声明版权和版本的声明位于头文件和定义文件的开头(参见示例3-1),主要内容有: 版权信息 文件名称、标识符、摘要 当前版本号、作者/修改者、完成日期 版本历史信息示例3-1版本和版权的声明说明:Description一项描述本文件的内容、功能、内部各部分之间的关系及本文件与其它文件关系等。History是修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述。示例:示例3-2版本和版权的声明示例3-4 C+/C定义文件的结构3.1.2 头文件的结构头文件由三部分内容组成: 头文件开头处的版权和版本声明(参见示例 3-1

4、) 预处理块 函数和类结构声明等假设头文件名称为 Sample.h,头文件的结构参见示例 3-3示例3-3C/C+头文件的结构 【规则3-2-1】为了防止头文件被重复引用,应当用 ifndef/define/endif结构产生预处理块 【规则3-2-2】用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索) 【规则3-2-3】用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的目录开始搜索) 【建议3-2-1】头文件中只存放“声明”而不存放“定义”在 C+ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会

5、带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小 【建议3-2-2】不提倡使用全局变量,尽量不要在头文件中出现象 extern int value 这类声明3.1.3 定义文件的结构定义文件有三部分内容:(1) 定义文件开头处的版权和版本声明(参见示例 3-1)(2) 对一些头文件的引用(3) 程序的实现体(包括数据和代码)假设定义文件的名称为 Sample.cpp,定义文件的结构参见示例 3-4。3.1.4 头文件的作用早期的编程语言如 Basic、Fortran没有头文件的概念,C/C+语言的初学者虽然会用使用头文件,但常常不明其理。这

6、里对头文件的作用略作解释:(1) 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。(2) 头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。3.1.5 目录结构如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维护。例如可将头文件保存于 include目录,将定义文件保存于 source

7、目录(可以是多级目录)。如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。3.2 程序的版式版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。可以把程序的版式比喻为“书法”。好的“书法”可让人对程序一目了然,看得兴致勃勃。差的程序“书法”如螃蟹爬行,让人看得索然无味,更令维护者烦恼有加。请程序员们学习程序的“书法”,弥补大学计算机教育的漏洞,实在很有必要。3.2.1 空行空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。空行不会

8、浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。所以不要舍不得用空行。 【规则 2-3-1】在每个类声明之后、每个函数定义结束之后都要加空行。参见示例2-1(a) 【规则 2-3-2】在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。参见示例 2-1(b )示例2-1(b) 函数内部的空行示例2-1(a) 函数之间的空行3.2.2 代码行 【规则 2-2-1】一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。 【规则 2-2-2】if、for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少

9、都要加。这样可以防止书写失误。 【建议 2-2-1】尽可能在定义变量的同时初始化该变量(就近原则)如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。例如:int width = 10; / 定义并初绐化widthint height = 10; / 定义并初绐化heightint depth = 10; / 定义并初绐化depth示例 2-2(a)为风格良好的代码行,示例 2-2(b)为风格不良的代码行。int width; / 宽度int height; / 高度int depth; / 深度int width

10、, height, depth; / 宽度高度深度x = a + b;y = c + d;z = e + f;X a + b; y = c + d; z = e + f;if (width height)dosomething();if (width =”、“=”、“+”、“*”、“%”、“&”、“|”、“”这类操作符前后不加空格。 【建议 2-3-1】对于表达式比较长的 for语句和 if语句,为了紧凑起见可以适当地去掉一些空格,如for (i=0; i10; i+)和 if (a=b) & (c= 2000) / 良好的风格if(year=2000) / 不良的风格if (a=b) & (

11、c=b&c=d) / 不良的风格for (i=0; i10; i+) / 良好的风格for(i=0;i10;i+) / 不良的风格for (i = 0; I 10; i +) / 过多的空格x = a b ? a : b; / 良好的风格x=aFunction(); / 不要写成b - Function();示例2-3 代码行内的空格3.2.4 对齐 【规则 2-4-1】程序的分界符和应独占一行并且位于同一列,同时与引用它们的语句左对齐。 【规则 2-4-2】 之内的代码块在右边数格处左对齐。示例 2-4(a)为风格良好的对齐,示例 2-4(b)为风格不良的对齐。void Function(i

12、nt x) / program codevoid Function(int x) / program codeif (condition) / program codeelse / program codeif (condition) / program codeelse / program codefor (initialization; condition; update) / program codefor (initialization; condition; update) / program codeWhile (condition) / program codewhile (co

13、ndition) / program code如果出现嵌套的,则使用缩进对齐,如:示例2-4(b) 风格不良的对齐示例2-4(a) 风格良好的对齐3.2.5 长行拆分 【规则 2-5-1】代码行最大长度宜控制在 70至 80个字符以内。代码行不要过长,否则眼睛看不过来,也不便于打印。 【规则 2-5-2】长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。if (very_longer_variable1 = very_longer_variable12)& (very_longer_variable3 = very

14、_longer_variable14)& (very_longer_variable5 Draw(); / 类的成员函数 【规则 3-3-9】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。例如:int minValue;int maxValue;int SetValue();int GetValue(); 【建议 3-3-1】尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。3.3.2 简单的 Windows应用程序命名规则本文对“匈牙利”命名规则做了合理的简化

15、,下述的命名规则简单易用,比较适合于 Windows应用软件的开发。 【规则 3-2-1】类名和函数名用大写字母开头的单词组合而成。例如:class Node; / 类名class LeafNode; / 类名void Draw(void); / 函数名void SetValue(int value); / 函数名 【规则 3-2-2】变量和参数用小写字母开头的单词组合而成。例如:BOOL flag;int drawMode; 【规则 3-2-3】常量全用大写的字母,用下划线分割单词。例如:const int MAX = 100;const int MAX_LENGTH = 100; 【规则

16、3-2-4】静态变量加前缀 s_(表示 static)。例如:void Init()static int s_initValue; / 静态变量 【规则 3-2-5】如果不得已需要全局变量,则使全局变量加前缀 g_(表示 global)。例如:int g_howManyPeople; / 全局变量int g_howMuchMoney; / 全局变量 【规则 3-2-6】类的数据成员加前缀 m_(表示 member),这样可以避免数据成员与成员函数的参数同名。例如:void Object:SetValue(int width, int height)m_width = width;m_heigh

17、t = height; 【规则 3-2-7】类的数据成员加前缀h表示变量是一个HANDLE类型的句柄。例如:hFIleHandle3.3.3 C+Builder控件命名规则分类前缀类控件类型单元/容器fm_TForm窗体fa_TFrameFramepanel_TPanel面板按钮btn_HWutton下拉式列表框bbtn_HWiHWutton图片按钮sbtn_TSpeedButton快速按钮文本/输入/选择lab_TLabel标签ed_TEdit文本输入框red_TRichEditRich Edit控件memo_TMemoMemo控件chk_TCheckBoxCheckBoxlb_TLisHW

18、ox列表框rd_TRadioButtonRadioButton图像img_TImage图片框imgl_TImageList图片列表cht_TChart图表菜单mm_TMainMenu主菜单mi_TMenuItem菜单项pop_TPopMenu弹出菜单工具栏HW_TToolBar工具栏HWtn_TToolButton工具条按钮cb_TCoolBarCoolBar网格sg_TStringGrid网格asg_TAdvStringGridAdvStringGrid(第三方控件)布局/信息组织lv_TListViHW列表显示控件tv_TTreeViHW树型结构显示控件tabc_TTabControl分页

19、、选项卡pagc_TPageControlspl_TSplitter分隔条scr_TScrollBar滚动条stat_TStatusBar状态栏3.4 缩进规则在各个编译环境中把Tab键的长度改为4个空格长。大括号单独占一行,但是不缩进。SQL语句的缩进风格(1)查询列表的书写风格(与注释综合考虑)一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进SELECT col1,col2,. colm,coln,. INTO v_col1,v_col2,. v_colm,.(2)WHERE 子句的书写规范每个条件占一行嵌套查询条件书写规范 WHERE con1 AND con2 AND col

20、3 NOT IN ( SELECT col3 FROM t2 WHERE .);控制结构的缩进程序应以缩进形式展现程序的块结构和控制结构。下列保留字的下一行缩进四格,BEGIN、THEN、ELSE、ELSIF、LOOP下列保留字所在行前移四格 END、ELSE、ELSIF、END IF、END LOOP缩进的限制(1)每次缩进标准为 4个空格,可使用 TAB 键。(2)任何一个程序最大行宽不得超过80列,第一行续行语句缩进四格,后续续行语句与第一行续行语句对齐。长语句的下一语句以长语句为对齐基准参照上面规定执行。4 Java编程规范 4.1 代码组织与风格4.1.1 缩进:代码中以TAB 4缩

21、进。4.1.2 长度:单个函数长度不应大于100行(不包括注释行),超过时应当考虑使用子函数。4.1.3 行宽:程序最大行宽一般不超过80列,超过者应折行书写(因编译器、工具兼容问题可以不折行)。4.1.4 间隔:类、方法等之间应以空行相隔,以增加可读性。4.1.5 风格:对每个文件、类、接口、方法等都应有较详细的注释。类、接口、方法的左括号换行并独占一行;各控制、条件、循环的语句级别的左括号紧跟该代码段最后一句后,不单独占行。较长的方法以及类、接口等的右括号后应使用/end .标识其结束。具体参考如下例:/* 文件、包注释*/package user;/* 引用包注释*/import jav

22、a.uitl.*;/* 类注释*/public class User/变量注释private Name;/* 方法注释*/ public String getUserName(String userID) String userName = nHW String(); /语句注释 if ( null != userID) /条件注释 userName = UserBean.getUserName(userID); /end if return userName;/end getUserNameend User4.2 注解4.2.1 基本原则1 注释应该增加代码的清晰度。代码注释的目的是要使代码

23、更易于被同时参与程序设计的开发人员以及其他后继开发人员理解。2 如果你的程序不值得注释,那么它也很可能也不值得运行。3 避免使用装饰性内容。4 保持注释的简洁。5 注释信息不仅要包括代码的功能,还应给出原因。6 尽量不使用行末注释。4.2.2 文件、包注解在每个文件、包的头部都应该对该文件的功能、作用、作者、版权以及修改记录等进行注解。参考如下模板:/* * title 任务队列管理类 * version 1.0 * copyright Copyright (c) 2003-4-18 * company Eastcompeacecom Smart Card Co., Ltd. * author

24、 Jack * date 2003-04-18 * description 管理任务队列 * history * 1. 2005-05-08 Jack 完成该类的编码 * 2. 2005-05-09 david 添加getProperties() */ 4.2.3 类、接口注解在类、接口定义之前当对其进行注释,包括类、接口的目的、作用、功能、继承于何种父类,实现的接口以及重大的修改记录等等,基本依据标准的JavaDoc规范。4.2.4 方法注解依据标准JavaDoc规范对方法进行注释,以明确该方法功能、作用、各参数含义以及返回值等。复杂的算法用/*/在方法内注解出。如: /* * YHPCZL

25、am sql SQL语句 * return ResultSet结果集 * throws SQLException SQL异常 * description 执行查询。 * 该方法调用Statement的executeQuery(sql)方法并返回ResultSet结果集。 */ public ResultSet executeQuery(String sql) throws SQLException 4.2.5 语句注解应对重要的变量加一注释,以说明其含义等。应对不易理解的分支条件表达式加注释。不易理解的循环,应说明出口条件。过长的方法实现,应将其语句按实现的功能分段加以概括性说明。对于异常处理

26、注明正常情况及异常情况或者条件,并说明当异常发生时程序当如何处理。单行语句注解应当比其注解的语句缩进两个字符。4.2.6 注解参考表项目注释部分参数参数类型 参数用来做什么任何约束或前提条件示例字段/属性字段描述 注释所有使用的不变量示例并行事件可见性决策类类的目的 已知的问题类的开发/维护历史、版本注释出采用的不变量并行策略编译单元每一个类/类内定义的接口,含简单的说明 文件名和/或标识信息修改/维护记录版权信息获取成员函数若可能,说明为什么使用滞后初始化接口目的 它应如何被使用以及如何不被使用局部变量用处/目的成员函数注释成员函数做什么以及它为什么做这个 哪些参数必须传递给一个成员函数成员函数返回什么已知的问题任何由某个成员函数抛出的异常可见性决策成员函数是如何改变对象的包含任何修改代码的历史如何在适当情况下调用成员函数的例子适用的前提条件和 后置条件成员函数内部注释控制结构 代码做了些什么以及为什么这样做局部变量难或复杂的代码或代码处理顺序包包的基本原理 包中的类功能和用途包的开发/修改/维护/版本信息版权信息4.3 命名4.3.1 基本原则1 使用可以准确说明变量/字段/类的完整的英文描述符。例如,采用类似 firstName,grandTotal

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

当前位置:首页 > 技术资料 > 技术规范

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

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