ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:32.61KB ,
资源ID:25823067      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25823067.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(华为软件编程地要求规范.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

华为软件编程地要求规范.docx

1、华为软件编程地要求规范文 档 编 号产品版本受控状态DC-SB-2003-1005V 1.0内部产品名称: 软件编程规范共 页软件编程规范(仅供内部使用)北京世纪百合科技有限公司Beijing Centurial Lily Technology Co.,Ltd.版权所有 不得复制文档修改记录版本号日期所改页注 记提交人批准人目 录1. 引言 41.1 目的 41.2 范围 42. 规范 42.1 文件 42.2 版面风格 42.3 标识符命名 82.4 函数与宏 102.5 代码的可靠性 143. 附录:通用类型的公共定义 191. 引言1.1 目的本规范的目的在于增加源代码的可读性,减少程序

2、员对代码理解上的偏差,使程序员能够编写出可靠的代码,降低代码维护成本。1.2 范围本规范内容涉及范围包括:文件、版面、注释、标识符、变量和结构、函数、宏以及可理解性等。本规范适用于公司开发的所有软件产品。在新软件的编码过程中本规范必须执行。2. 规范2.1 文件2.1.1 头文件的名称一律为小写,格式为“子系统名_文件名.h”。例如:ipf_protocol.h等。2.1.2 头文件的格式如下: 注释头,格式参见软件编程规范; 头文件预编译开关开始,格式为:#ifndef 预编译开关#define 预编译开关其中预编译开关格式为:“ _文件名_H”,其中文件名一律大写 头文件内容; 头文件预编

3、译开关结束,格式为:#endif用来和头文件预编译开关的开始对应。例如:以下为ipf_ip.h头文件的内容:/*Copyright (c) Lily Of The Century Technology Co., LTD.ALL RIGHTS RESERVEDDescription: / 用于详细说明此程序文件完成的主要功能*/#ifndef _IPF_IP_H#define _IPF_IP_H.#endif2.1.3 头文件的定义要有层次,禁止交叉引用。说明:头文件的层次设置为公共模块、私有模块。头文件的引用次序为下层头文件引用上层头文件、私有头文件引用公共头文件,声明结构时尤其要注意,不允许

4、出现交叉引用的情况。示例:如下定义不符合规范头文件isdn_a.h/*Copyright (c) Lily Of The Century Technology Co., LTD.ALL RIGHTS RESERVEDDescription: 定义配置数据结构*/#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 Te

5、chnology Co., LTD.ALL RIGHTS RESERVEDDescription: 定义控制数据结构*/#ifndef _ISDN_B_H#define _ISDN_B_H#include “isdn_a.h”typedef struct .; ISDN_CONFIG stIsdnConfig; .;ISDN_CONTROL;#endif为了解决上述矛盾,可以将两个结构合并到一个文件中声明。2.1.4 文件中如果引用系统头文件,必须使用“;如果引用自定义的头文件,必须使用“”“和“”“。说明:系统头文件是指由编译系统提供的头文件。示例:如下书写不符合规范。#include “s

6、tdlib.h”#include 应该改作:#include #include “isdn_config.h”2.1.5 头文件中只能声明变量类型,禁止定义变量。说明:如果在头文件中定义变量,当有多个源文件引用该头文件时,会出现重复定义的错误。示例:如下头文件是不规范的。头文件isdn_a.h/*Copyright (c) Lily Of The Century Technology Co., LTD.ALL RIGHTS RESERVEDDescription: 定义配置数据结构*/#ifndef _ISDN_A_H#define _ISDN_A_Htypedef struct .;ISDN

7、_ CONFIG;ISDN_CONFIG g_stIsdnConfig;#endif 结构变量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、.8 源文件必须加注释头。源文件注释头格式为:/*Copyright (c) Lily Of The Century Technology Co.,LTD.ALL RIGHTS RESERVEDDescription: / 用于详细说明此程序文件完成的主要功能*/2.2 版面风格2.2.1 程序块采用缩进风格编写,缩进使用TAB符号,TAB符号规定为4个空格。变量说明之后必须加空行。说明:由开发工具自动生成的代码例外。示例:如下例子不符合规范。void isdn_InitConfig(void) WORD wConfigNumner; .; /program code应如下书写void isd

9、n_InitConfig(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、f

10、or等语句自占一行,且if、else语句在同一列。 示例1:如下例子不符合规范。do .; /program code while (pstUser != NULL);应如下书写:do .; /program code while (pstUser != NULL);示例2:如下例子不符合规范。while (pstUser != NULL) .; /program code应如下书写:while (pstUser != NULL) .; /program code示例3:如下例子不符合规范。switch (dwCounter) case 1: dwCounter+; .; /program c

11、ode break; default:break;应如下书写:switch (dwCounter) case 1: dwCounter+; .; /program code break; default: break;示例4:如下例子不符合规范。if (pstUser = NULL) return;else .; /program code应如下书写:if (pstUser = NULL)return;else .; /program code示例5:如下例子不符合规范。for (i = 0;i 10;i+) .; /program code应如下书写:for (i = 0;i 4) & 0x

12、F0)2.3.3 函数的命名为:前缀+下划线+字符串。其中前缀为全小写的子系统名称,字符串由一个或多个单词组成,每个单词首字母大写,其他字母小写。示例:void MsgCreate(void);void icmp_PktRecv(void);2.3.4 调试用的编译开关是开头为下划线的全大写字符串,具体格式是:下划线+DEBUG+子系统名称+下划线+名称。示例:_DEBUG_IPF_IP_PACKET、_DEBUG_TCP_OPTION等。2.3.5 结构联合类型命名规则为:子系统名称+下划线+结构名称、子系统名称+下划线+联合名称,其中所有字母大写。示例:typedef struct .;I

13、P_TRACEROUTE;typedef union .;ICMP_PKT;2.3.6 全局变量命名的具体格式是:前缀+下划线+子系统名+下划线+字符串,其中前缀为小写的“g”,子系统名称全部小写,字符串由一个或多个单词组成,每个单词首字母大写,其他字母小写。示例:g_icmp_TraceRouteQueue、g_ospf_InterfList等。2.3.7 消息宏定义的采用一下格式:前缀+下划线+字符串+下划线+后缀。其中前缀采用小写的“mm”,字符串标记消息宏的具体含义,由一个或多个单词组成,每个单词首字母大写,其他字母小写,后缀为XXXtoYYY,表示消息的传送方向,XXX表示源子系统名

14、,YYY为目的子系统名,全部用大写字母表示。示例:mm_AddRoute_BGPtoRTMGT表示从BGP协议发送到路由管理实体的增加一条路由的消息,mm_ShowIpRoute_CLItoRTMGT表示从CLI发送到路由管理子系统的要求显示路由表的消息。2.4 函数与宏2.4.1 对函数的返回值要仔细、全面地处理。说明:对提供返回值的函数,尤其是接口函数,其返回值必须检查。示例:以下函数是不规范的。void isdn_SendMessage(void) .; /program code MsgPost(.); / 发送消息应该改作void isdn_SendMessage(void) INT

15、32 iPost; .; /program code iPost = MsgPost(.); / 发送消息 if (iPost = OK) .; /处理代码else .; /处理代码2.4.2 接口函数的输入参数(尤其是指针和数组下标)、非输入参数的合法性必须检查。说明:函数的输入主要有两种:一种是参数输入;另一种是非参数输入,包括全局变量、数据文件等,这些参数都需要作检查。示例:下函数的实现不符合规范。RESULT isdn_Receive(NI_CELL *pstCell,SK_BUF *pstSkBuf).; /接收数据代码return OK;应改作以下写法。RESULT isdn_Re

16、ceive(NI_CELL *pstCell,SK_BUF *pstSkBuf)if (pstCell = NULL) | (pstSkBuf = NULL) return FALSE;.; /接收数据代码return OK;2.4.3 禁止把函数的参数作为工作变量。说明:需要做改变的参数,应该先用局部变量代之,最后再将该局部变量的内容赋给该参数。示例:下函数的实现不符合规范。BOOLEAN isdn_SumData(WORD wNumber,WORD *pwData, WORD *pwSum) WORD wCount;if (pwData = NULL) | (pwSum = NULL) r

17、eturn FALSE; *pwSum = 0; for (wCount = 0; wCount wNumber; wCount+) *pwSum += pwDatawCount; / pwSum成了工作变量,不规范return TRUE;应改作以下写法。BOOLEAN isdn_SumData(WORD wNumber,WORD *pwData, WORD *pwSum) WORD wCount; WORD wSumTemp;if (pwData = NULL) | (pwSum = NULL) return FALSE; wSumTemp = 0; for (wCount = 0; wCount b ? a : b#define MAX(a,b) (a b ? a : b)#define MAX(a,b) (a) (b) ? (a) : (b)正确的定义应为:#define MAX(a,b) (a) (b) ? (a) : (b)2.4.7 将宏所定义的多条表达式放在大括号中。示例:下面的定义不规

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1