1、Comment liao1: Page: 1密级可以选择以下几种: 无, 一般,内部,组内,秘密,绝密等。文 档 编 号 产品版本 受控状态DC-SB-2003-1005 V 1.0 内部产品名称: 软件编程规范 共 页软件编程规范(仅供内部使用)北京世纪百合科技有限公司Beijing Centurial Lily Technology Co.,Ltd.版权所有 不得复制北京世纪百合技术有限公司 软件编程规范 第 2 页 共 24 页文档修改记录版本号 日期 所改页 注 记 提交人 批准人北京世纪百合技术有限公司 软件编程规范 第 3 页 共 24 页目 录1. 引言 .41.1 目的 .41
2、.2 范围 .42. 规范 .42.1 文件 .42.2 版面风格 .42.3 标识符命名 .82.4 函数与宏 .102.5 代码的可靠性 .143. 附录:通用类型的公共定义 .19北京世纪百合技术有限公司 软件编程规范 第 4 页 共 24 页1. 引言1.1 目的本规范的目的在于增加源代码的可读性,减少程序员对代码理解上的偏差,使程序员能够编写出可靠的代码,降低代码维护成本。1.2 范围本规范内容涉及范围包括:文件、版面、注释、标识符、变量和结构、函数、宏以及可理解性等。本规范适用于公司开发的所有软件产品。在新软件的编码过程中本规范必须执行。2. 规范2.1 文件2.1.1 头文件的名
3、称一律为小写,格式为“子系统名_文件名.h”。例如:ipf_protocol.h 等。2.1.2 头文件的格式如下: 注释头,格式参见软件编程规范; 头文件预编译开关开始,格式为:#ifndef 预编译开关#define 预编译开关其中预编译开关格式为:“ _文件名_H”,其中文件名一律大写 头文件内容; 头文件预编译开关结束,格式为:#endif用来和头文件预编译开关的开始对应。例如:以下为 ipf_ip.h 头文件的内容:/*Copyright (c) Lily Of The Century Technology Co., LTD.ALL RIGHTS RESERVEDDescriptio
4、n: / 用于详细说明此程序文件完成的主要功能*/#ifndef _IPF_IP_H#define _IPF_IP_H.北京世纪百合技术有限公司 软件编程规范 第 5 页 共 24 页.#endif2.1.3 头文件的定义要有层次,禁止交叉引用。说明:头文件的层次设置为公共模块、私有模块。头文件的引用次序为下层头文件引用上层头文件、私有头文件引用公共头文件,声明结构时尤其要注意,不允许出现交叉引用的情况。示例:如下定义不符合规范头文件 isdn_a.h/*Copyright (c) Lily Of The Century Technology Co., LTD.ALL RIGHTS RESER
5、VEDDescription: 定义配置数据结构*/#ifndef _ISDN_A_H#define _ISDN_A_H#include “isdn_b.h”typedef struct.;ISDN_CONTROL stIsdnControl;.;ISDN_ CONFIG;#endif头文件 isdn_b.h/*Copyright (c) Lily Of The Century Technology Co., LTD.北京世纪百合技术有限公司 软件编程规范 第 2 页 共 24 页ALL RIGHTS RESERVEDDescription: 定义控制数据结构*/#ifndef _ISDN_B
6、_H#define _ISDN_B_H#include “isdn_a.h”typedef struct.;ISDN_CONFIG stIsdnConfig;.;ISDN_CONTROL;#endif为了解决上述矛盾,可以将两个结构合并到一个文件中声明。2.1.4 文件中如果引用系统头文件,必须使用“ “;如果引用自定义的头文件,必须使用“”“和“”“。说明:系统头文件是指由编译系统提供的头文件。示例:如下书写不符合规范。#include “stdlib.h”#include 应该改作:#include #include “isdn_config.h”2.1.5 头文件中只能声明变量类型,禁止
7、定义变量。说明:如果在头文件中定义变量,当有多个源文件引用该头文件时,会出现重复定义的错误。示例:如下头文件是不规范的。头文件 isdn_a.h/*Copyright (c) Lily Of The Century Technology Co., LTD.北京世纪百合技术有限公司 软件编程规范 第 3 页 共 24 页ALL RIGHTS RESERVEDDescription: 定义配置数据结构*/#ifndef _ISDN_A_H#define _ISDN_A_Htypedef struct.;ISDN_ CONFIG;ISDN_CONFIG g_stIsdnConfig;#endif结构
8、变量 g_stIsdnConfig 不能在头文件中定义,只能在源文件中定义。可以在相应的源文件定义后,头文件作如下改动:ISDN_CONFIG g_stIsdnConfig;改为extern ISDN_CONFIG g_stIsdnConfig;2.1.6 头文件的声明顺序,应该有层次感。说明:头文件的声明顺序一般是宏、结构、函数、变量。函数在头文件中声明时开头可以不加“extern”2.1.7 源文件名称一律小写,格式为:子系统名_文件名.c,示例:ipf_ pkt.c 表示在 IPF 子系统的包处理文件。2.1.8 源文件必须加注释头。源文件注释头格式为:/*Copyright (c) L
9、ily Of The Century Technology Co.,LTD.ALL RIGHTS RESERVEDDescription: / 用于详细说明此程序文件完成的主要功能*/北京世纪百合技术有限公司 软件编程规范 第 4 页 共 24 页2.2 版面风格2.2.1 程序块采用缩进风格编写,缩进使用 TAB 符号,TAB 符号规定为 4 个空格。变量说明之后必须加空行。说明:由开发工具自动生成的代码例外。示例:如下例子不符合规范。void isdn_InitConfig(void)WORD wConfigNumner;.; /program code应如下书写void isdn_Ini
10、tConfig(void)WORD wConfigNumner;.; /program code2.2.2 不允许把多个短语句写在一行中,一行只写一条语句。示例:如下例子不符合规范。wLength = wWidth = 0;或 wLength = 0, wWidth = 0;应如下书写wLength = 0;wWidth = 0;禁止如下写法:int i = j = 0;或 int i = 0,j = 0;应该写作:int i = 0;int j = 0;或int i,j;i = 0;j = 0;2.2.3 do、while 、switch 、case、default、if、else、for
11、等语句自占一行,且if、else 语句在同一列。 示例 1:如下例子不符合规范。do .; /program code北京世纪百合技术有限公司 软件编程规范 第 5 页 共 24 页 while (pstUser != NULL);应如下书写:do.; /program code while (pstUser != NULL);示例 2:如下例子不符合规范。while (pstUser != NULL) .; /program code应如下书写:while (pstUser != NULL).; /program code示例 3:如下例子不符合规范。switch (dwCounter) c
12、ase 1: dwCounter+;.; /program codebreak;default:break;应如下书写:switch (dwCounter)case 1:dwCounter+;.; /program codebreak;default:break;示例 4:如下例子不符合规范。if (pstUser = NULL) return;else .; /program code应如下书写:if (pstUser = NULL)return;else.; /program code北京世纪百合技术有限公司 软件编程规范 第 6 页 共 24 页示例 5:如下例子不符合规范。for (i
13、 = 0;i 10;i+) .; /program code应如下书写:for (i = 0;i 10;i+).; /program code2.2.4 函数的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。示例:如下例子不符合规范。int isdn_Config(void) .; / program codereturn 0;应该改为int isdn_Config(void) .; / program codereturn 0;示例:如下例子不符合规范。typedef structWORD wSlot;WORD wPort;ISDN_CONFIG;应该改为typedef structWORD wSlot;WORD wPort;ISDN_CONFIG;2.2.5 在 switch 的处理程序块中,case 和 default 语句下的处理语句也要遵从语句缩进要求。示例:以下写法是不规范的switch (wEvent)
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。