软件编程规范.docx
- 文档编号:2852469
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:80
- 大小:61.99KB
软件编程规范.docx
《软件编程规范.docx》由会员分享,可在线阅读,更多相关《软件编程规范.docx(80页珍藏版)》请在冰豆网上搜索。
软件编程规范
目次
前言5
1.范围6
2.术语和定义6
2.1.原则6
2.2.规则6
2.3.建议6
2.4.说明6
2.5.正例6
2.6.反例6
3.基本原则6
4.设计原则7
5.布局7
5.1.文件布局7
5.2.基本格式9
5.3.对齐10
5.4.空行空格12
5.5.断行14
5.6.PERL文件布局15
6.注释17
7.命名规则22
7.1.基本规则22
7.2.文件命名26
7.3.模块命名26
7.4.函数命名26
7.5.事件命名27
7.6.变量命名27
7.7.常量命名27
7.8.资源命名27
8.变量,常量与类型28
8.1.变量与常量28
8.2.类型31
9.表达式与语句36
10.接口,函数与过程42
10.1.接口指南42
10.1.1.基本思想42
10.1.2.基本原则42
10.1.3.返回值44
10.1.4.方法44
10.1.5.布尔参数44
10.1.6.私有的和公共的接口45
10.1.7.实用性和重用性45
10.1.8.函数45
10.2.函数与过程46
10.2.1.参数46
10.2.2.返回值47
10.2.3.内部实现48
10.2.4.函数调用51
11.文件指南52
11.1.头文件52
11.1.1.Generalheader-file52
11.1.2.Public-interfaceheaderfiles53
11.1.3.Regionalheaderfiles53
11.1.4.Definitionheaderfiles54
11.2.Implementationfiles54
12.任务间通信54
12.1.概述54
12.2.要求55
12.3.指南56
12.3.1.利用公开发布的API完成任务间通信的方法56
12.4.任务间通信历史方法57
13.PERL规范58
13.1.编码规范58
13.2.命名规范58
13.2.1.文件命名规范58
13.2.2.标识命名规范59
13.2.3.形式参数59
14.可靠性59
14.1.内存使用60
14.2.指针使用62
14.3.类和函数63
15.可测试性67
16.断言与错误处理70
前言
编写本标准的目的是为了统一软件编程风格,提高软件源程序的可读性、可靠性和可重用性,提高软件源程序的质量和可维护性,减少软件维护成本,最终提高软件产品生产力。
考虑到不同产品和项目的实际开发特性,本规范分成规则性和建议性两种:
对于规则性规范,要求所有软件开发人员严格执行;对于建议性规范,各项目编程人员可以根据实际情况选择执行。
本规范的示例都以C/C++语言描述。
本规范的内容包括:
基本原则、设计原则、布局、注释、命名规则、变量常量与类型、表达式与语句、接口、文件、任务间通讯、可靠性、可测试性、断言与错误处理。
。
1.基本原则
●模块化设计原则:
减小模块之间的耦合度。
即要对模块进行解耦。
如何达到模块之间的耦合度最小,关键是设计模块之间的接口;一个模块实现独立的,通用的,一定原子性的功能;模块实现代码与下层支撑层之间采用标准接口,保证代码的可移植性。
●开发的软件要有可读性和可维护性。
首先是为人编写程序,其次才是计算机,要考虑到产品的开发,测试,生产,用户使用,版本升级和后期维护等长期过程。
●编码格式要遵守文件模板
●尽量保证底层源码的完整性
●尽量不要改变代码的风格,坚持代码的最初风格
●保证软件系统的稳定性,易读性,可修改性,可扩充性,可重用性和可移植性
●不必改变以前代码风格以适应新的风格
●鼓励多加注释
●在代码中避免使用tab,而用空格代替
●根据不同的功能来创建源文件
●源文件中函数的顺序要符合逻辑
●函数本身不要太大,控制在1到2页的范围
●保持代码的简明清晰,避免过分的编程技巧
●使用C语言的代码要尽可能遵循ANSIC标准
●编程首先要考虑代码的正确性、健壮性、可维护性、可移植性等质量因素,最后才考虑程序的效率和资源占用
●避免或者少用全局变量,过多地使用全局变量,会导致模块间的紧耦合,违反模块化的要求
●尽量避免使用GOTO语句
●尽可能重用和修正老的代码
2.设计原则
●当一个模块改变时不应该影响到其它模块的实现
●确定代码能否在不同的平台上运行
●如果代码中存在条件编译,考虑去除这些条件时的情况
●尽量减少程序对工具和硬件的依赖
●注意代码的易测性
●尽量减少代码的复杂度
3.布局
程序布局的目的是显示出程序良好的逻辑结构,提高程序的准确性、连续性、可读性、可维护性。
更重要的是,统一的程序布局和编程风格,有助于提高整个项目的开发质量,提高开发效率,降低开发成本。
同时,对于普通程序员来说,养成良好的编程习惯有助于提高自己的编程水平,提高编程效率。
因此,统一的、良好的程序布局和编程风格不仅仅是个人主观美学上的或是形式上的问题,而且会涉及到产品质量,涉及到个人编程能力的提高,必须引起大家重视。
3.1.文件布局
【规则2-1-1】遵循统一的布局顺序来书写头文件。
说明:
以下内容如果某些节不需要,可以忽略。
但是其它节要保持该次序。
头文件布局:
文件头(参见“注释”一节)
#ifndef文件名_H(全大写)
#define文件名_H
其它条件编译选项
#include(依次为标准库头文件、非标准库头文件)
常量定义
全局宏
全局数据类型
类定义
模板(template)(包括C++中的类模板和函数模板)
全局函数原型
#endif
【规则2-1-2】遵循统一的布局顺序来书写实现文件。
说明:
以下内容如果某些节不需要,可以忽略。
但是其它节要保持该次序。
实现文件布局:
文件头(参见“注释”一节)
#include(依次为标准库头文件、非标准库头文件)
常量定义
文件内部使用的宏
文件内部使用的数据类型
全局变量
本地变量(即静态全局变量)
局部函数原型
类的实现
全局函数
局部函数
【规则2-1-3】使用注释块分离上面定义的节。
正例:
/***********************************************************
*数据类型定义*
***********************************************************/
typedefunsignedcharBOOLEAN;
/*************************************************************
*函数原型*
************************************************************/
intDoSomething(void);
【规则2-1-4】头文件必须要避免重复包含。
说明:
可以通过宏定义来避免重复包含。
正例:
#ifndefMODULE_H
#defineMODULE_H
[文件体]
#endif
【规则2-1-5】包含标准库头文件用尖括号<>,包含非标准库头文件用双引号“”。
正例:
#include
#include“heads.h”
【规则2-1-6】遵循统一的顺序书写类的定义及实现。
说明:
类的定义(在定义文件中)按如下顺序书写:
公有属性
公有函数
保护属性
保护函数
私有属性
私有函数
类的实现(在实现文件中)按如下顺序书写:
构造函数
析构函数
公有函数
保护函数
私有函数
3.2.基本格式
【规则2-2-1】程序中一行的代码和注释不能超过80列。
说明:
包括空格在内不超过80列。
【规则2-2-2】if、else、elseif、for、while、do等语句自占一行,执行语句不得紧跟其后。
不论执行语句有多少都要加{}。
说明:
这样可以防止书写失误,也易于阅读。
正例:
if(varible1 { varible1=varible2; } 反例: 下面的代码执行语句紧跟if的条件之后,而且没有加{},违反规则。 if(varible1 【规则2-2-3】定义指针类型的变量,*应放在变量前。 正例: float*pfBuffer; 反例: float*pfBuffer; 〖建议2-2-1〗源程序中关系较为紧密的代码应尽可能相邻。 说明: 这样便于程序阅读和查找。 正例: iLength=10; iWidth=5;//矩形的长与宽关系较密切,放在一起。 StrCaption=“Test”; 反例: iLength=10; strCaption=“Test”; iWidth=5; 3.3.对齐 【规则2-3-1】禁止使用TAB键,必须使用空格进行缩进。 缩进为4个空格。 说明: 消除不同编辑器对TAB处理的差异,有的代码编辑器可以设置用空格代替TAB键。 【规则2-3-2】程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。 {}之内的代码块使用缩进规则对齐。 说明: 这样使代码便于阅读,并且方便注释。 dowhile语句和结构的类型化时可以例外,while条件和结构名可与}在同一行。 正例: voidFunction(intiVar) {//独占一行并与引用语句左对齐。 while(condition) { DoSomething();//与{}缩进4格 } } 反例: voidFunction(intiVar){ while(condition){ DoSomething(); }} 【规则2-3-3】声明类的时候,public、protected、private关键字与分界符{}对齐,这些部分的内容要进行缩进。 正例: classCCount { public: //与{对齐 CCount(void);//要进行缩进 ~CCount(void); intGetCount(void); voidSetCount(intiCount); private: intm_iCount; } 【规则2-3-4】结构型的数组、多维的数组如果在定义时初始化,按照数组的矩阵结构分行书写。 正例: intaiNumbers[4][3]= { 1,1,1, 2,4,8, 3,9,27, 4,16,64 } 【规则2-3-5】相关的赋值语句等号对齐。 正例: tPDBRes.wHead=0; tPDBRes.wTail=wMaxNumOfPDB-1; tPDBRes.wFree=wMaxNumOfPDB; tPDBRes.wAddr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 编程 规范