软件编写规范(质量保证篇)

来源:互联网 发布:淘宝拖动滑块完成验证 编辑:程序博客网 时间:2024/06/06 03:25

//摘抄自华为软件编写规范
1、过程/ 函数中申请的(为打开文件而使用的)文件句柄,在过程/ 函数退出之前要关闭
说明:分配的内存不释放以及文件句柄不关闭,是较常见的错误,而且稍不注意就有可能发生。这类错误往往会引起很严重后果,且难以定位。
示例:下函数在退出之前,没有把分配的内存释放。

typedef unsigned char BYTE; int example_fun( BYTE gt_len, BYTE *gt_code ) {      BYTE *gt_buf;      gt_buf = (BYTE *) malloc (MAX_GT_LENGTH);      ...   //program code, include check gt_buf if or not NULL.      /* global title length error */      if (gt_len > MAX_GT_LENGTH)      {          return GT_LENGTH_ERROR; //  忘了释放 gt_buf      }      ...   // other program code } 

应改为如下。

int example_fun( BYTE gt_len, BYTE *gt_code ) {      BYTE *gt_buf;      gt_buf = (BYTE * ) malloc ( MAX_GT_LENGTH );      ...   // program code, include check gt_buf if or not NULL.      /* global title length error */      if (gt_len > MAX_GT_LENGTH)      {          free( gt_buf   ); //  退出之前释放 gt_buf          return GT_LENGTH_ERROR;        }      ...   // other program code } 

2、系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用
3、严禁随意更改其它模块或系统的有关设置和配置
说明:编程时,不能随心所欲地更改不属于自己模块的有关设置如常量、数组的大小等。
4、不能随意改变与其它模块的接口
5、编程时,要防止差 1 错误
说明:此类错误一般是由于把“<=”误写成“<”或“>=”误写成“>”等造成的,由此引起的后果,很多情况下是很严重的,所以编程时,一定要在这些地方小心。当编完程序后,应对这些操作符进行彻底检查。
6、要时刻注意易混淆的操作符。当编完程序后,应从头至尾检查一遍这些操作符,以防止拼写错误
说明:形式相近的操作符最容易引起误用,如 C/C++中的“=”与“==”、“|”与“||”、“&”与“&&”等,若拼写错
了,编译器不一定能够检查出来。
7、有可能的话,if 语句尽量加上 else 分支,对没有 else 分支的语句要小心对待;switch 语句必须有 default 分支
8、不要滥用 goto 语句。
说明:goto 语句会破坏程序的结构性,所以除非确实需要,最好不使用 goto 语句。
9、不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句,以提高软件的可移植性和可重用性
10、除非为了满足特殊需求,避免使用嵌入式汇编
说明:程序中嵌入式汇编,一般都对可移植性有较大的影响。
11、时刻注意表达式是否会上溢、下溢
示例:如下程序将造成变量下溢。

unsigned char size ; while (size-- >= 0) //  将出现下溢 {      ... // program code } 当 size 等于 0 时,再减 1 不会小于 0,而是 0xFF,故程序是一个死循环。应如下修改。 char size; //  从 unsigned char  改为 char while (size-- >= 0) {      ... // program code } 

12、使用变量时要注意其边界值的情况
示例:如 C 语言中字符型变量,有效值范围为-128 到 127。故以下表达式的计算存在一定风险。
char chr = 127;
int sum = 200;
chr += 1; // 127 为 chr 的边界值,再加 1 将使 chr 上溢到-128,而不是 128。
sum += chr; // 故 sum 的结果不是 328,而是 72。
若 chr 与 sum 为同一种类型,或表达式按如下方式书写,可能会好些。
sum = sum + chr + 1;
13、系统应具有一定的容错能力,对一些错误事件(如用户误操作等)能进行自动补救
14、对一些具有危险性的操作代码(如写硬盘、删数据等)要仔细考虑,防止对数据、硬件等的安全构成危害,以提高系统的安全性
15、使用第三方提供的软件开发工具包或控件时,要注意以下几点:
(1)充分了解应用接口、使用环境及使用时注意事项。
(2)不能过分相信其正确性。
(3)除非必要,不要使用不熟悉的第三方工具包与控件。
说明:使用工具包与控件,可加快程序开发速度,节省时间,但使用之前一定对它有较充分的了解,同时第三方工具包与控件也有可能存在问题。
16、资源文件(多语言版本支持),如果资源是对语言敏感的,应让该资源与源代码文件脱离,具体方法有下面几种:使用单独的资源文件、DLL 文件或其它单独的描述文件(如数据库格式)

原创粉丝点击