华为软件编程规范.doc

合集下载

华为C++语言通用编程规范

华为C++语言通用编程规范
我们推荐使用.h 作为头文件的后缀,这样头文件可以直接兼容 C 和 C++。 我们推 荐使用.cpp 作为实现文件的后缀,这样可以直接区分 C++代码,而不是 C 代码。
目前业界还有一些其他的后缀的表示方法:
• 头文件: .hh, .hpp, .hxx • cpp 文件:.cc, .cxx, .C
对于本文档,我们默认使用.h 和.cpp 作为后缀。
uint8_t
宽度恰为 8 的有/无符号整数类型
int16_t
uint16_t 宽度恰为 16 的有/无符号整数类型
int32_t
uint32_t 宽度恰为 32 的有/无符号整数类型
int64_t
uint64_t 宽度恰为 64 的有/无符号整数类型
intptr_t
uintptr_t 足以保存指针的有/无符号整数类型
// typedefs typedef std::map<std::string, UrlTableProperties*> PropertiesMap;
// enums enum UrlTableErrors { ...
对于命名空间的命名,建议全小写:
// namespace namespace osutils {
建议 2.2.2 C++文件名和类名保持一致
C++的头文件和 cpp 文件名和类名保持一致,使用下划线小写风格。
如下: - database_connection.h - database_connection.cpp
结构体,命名空间,枚举等定义的文件名类似。
函数命名
函数命名统一使用大驼峰风格,一般采用动词或者动宾结构。接口部分可加前缀, 如 XXX_函数名。

华为内部代码规范

华为内部代码规范

FileName: test.cpp
Author:
Version :
Description: // 模块描述
Date:
Version:
// 版本信息
Function List: // 主要函数及其功能
1. -------
History:
// 历史修改记录
<author> <time> <version > <desc>
包含在内。
/*************************************************
Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.
File name:
// 文件名
Author:
Version:
Date: // 作者、版本及完成日期
n7stat_str_compare((BYTE *) & stat_object, (BYTE *) & (act_task_table[taskno].stat_object), sizeof (_STAT_OBJECT));
n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER + index, stat_object );
软件编程规范总则
&& (n7stat_stat_item_valid (stat_item)) && (act_task_table[taskno].result_data != 0));
1 排版
仅供内部使用 3

Java语言编程规范(华为公司)

Java语言编程规范(华为公司)

Java语言编程规范(华为公司)DKBA华为技术有限公司企业技术规范DKBAXXXX-2001.12代替(DKBA200106-003)Java语言编程规范2001-12-XX发布2001-12-XX实施华为技术有限公司发布VVVVVVV VVVVVVVVVVVX。

XVX.X VX.X VX.X VX.XVX.X 目次前言 .............................................................................. .. (3)1 范围112 规范性引用文件113 术语和定义114 排版规范124.1 规则121.*程序块要采用缩进风格编写,缩进12的空格数为4个。

122.*分界符(如大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。

在函数体的开始、类和接口的定义、以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。

133.*较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。

134.*不允许把多个短语句写在一行中,即一行只写一条语句5.*if, for, do, while, case,13switch, default 等语句自占一行,且if, for, do, while等语句的执行语句无论多少都要加括号{}。

6.*相对独立的程序块之间、变量说明13之后必须加空行。

7.*对齐只使用空格键,不使用TAB键。

14VVVVVVV VVVVVVVVVVVX。

XVX.X VX.X VX.X VX.XVX.X 8.*在两个以上的关键字、变量、常量14进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如.),后不应加空格。

华为技术有限公司C语言编程规范

华为技术有限公司C语言编程规范
520111116华为机密未经许可不得扩散huaweiconfidential第5页共61页page5total610规范制订说明01前言为提高产品代码质量指导广大软件开发人员编写出简洁可维护可靠可测试高效可移植的代码编程规范修订工作组分析总结了我司的各种典型编码问题并参考了业界编程规范近年来的成果重新对我司1999年版编程规范进行了梳理优化刷新编写了本规范
修订声明Revision declaration
本规范拟制与解释部门:
本规范的相关系列规范或文件: 相关国际规范或文件一致性: 替代或作废的其它规范或文件: 相关规范或文件的相互关系:
规范号 DKBAxxxx.x-xxxx.xx
主要起草部门专家 PSST质量部: 郭曙光00121837 网络: 张伟00118807 周灿00056781 王晶00041937 陈艺彪00036913 IP开发部: 薛治00038309 核心网: 张小林00058208 王德喜00040674 李明胜00042021 软件公司: 文 滔00119601 无线: 刘爱华00162172 中研: 谭洪00162654
主要评审部门专家 PSST质量部: 李重霄00117374 郭永生00120218 核心网: 张进柏00120359 中研: 张建保00116237 无线: 苏光牛00118740 郑铭00118617 陶永祥00120482 软件公司: 周代兵00120359 刘心红00118478 朱文琦00172539 网络: 王玎00168059 黄维东49827 IP开发部: 饶远00152313
DKBA
华为技术有限公司内部技术规范
DKBA 2826-2011.5
C语言编程规范
2011年5月9日发布
2011年5月9日实施

华为流程规范分享

华为流程规范分享
持续集成提供产品质量的快速反馈保证随时拥有可工作的软件解决问题单源码checkin源码checkout自动编译链接自动发邮件编程规范检查代码静态检查自动单元测试代码格式化源码checkin源码打标签打包安装盘二进制文件配置文件帮助文件等包ftpcheckin自动部署自动验证自动发布源码管理编译测试部署随时随时每天一次每月一次发布版本发布人工自动工具自动工具自动工具生成品质度量报告自动工具支撑人工验证验证每周一次内部测试版本构建人工自动目录版本控制方面优秀实践敏捷研发流程优秀实践华为版本敏捷开发流程优秀实践1
生命周期 结束决策 评审
概念 计划
开发
生命
验证 发布 周期
TR1 TR2 TR3
TR4 TR5 TR4A
GA
TR6 LAUNCH
IPD的核心内容是以市场为导向的产 品开发,关注客户需求,另外IPD把 产品开发在公司内部也作为一项投资 来看待。
IPD流程需要建立了虚拟的投资决策 委员会(IPMT),对产品开发团队 (PDT)的活动在一些关键点上进 行决策,此外IPD所建立的产品开发 团是跨部门的,可以打破部门之间 的沟通壁垒,并给出了跨部门业务 流程指导跨部门团队运作。
每日站立会议的好处 增加团队凝聚力,产生积极的工作氛围 及时暴露风险和问题; 促进团队内成员的沟通和协调。
每日站立会议的关键要点
准时开始:按计划会议制定的时间地点开 会,形成团队成员的自然习惯;
高效会议:会议限时15分钟,每个人都保 持站立,依次发言,不讨论与会议三个主 题无关的事情(如技术解决方案等);
自动验证
随时 随时 每天一次
人工 自动工具 自动工具
验证
人工验证
每周一次 内部测试
人工

华为C++语言通用编程规范.pdf

华为C++语言通用编程规范.pdf
我们可以通过约束这些特性的使用,或者使用 C++的新特性,比如 variant(C++17), GSL 的 span,narrow_cast 等来解决这些问题,提高 C++代码的健壮性。
遵循 C++ ISO 标准
希望通过使用 ISO C++标准的特性来编写 C++代码,对于 ISO 标准中未定义的或者 编译器实现的特性要谨慎使用,对于 GCC 等编译器的提供的扩展特性也需要谨慎 使用,这些特性会导致代码的可移植性比较差。
保证静态类型安全
我们希望 C++应该是静态类型安全的,这样可以减少运行时的错误,提高代码的健 壮性。但是由于 C++的下面的特性存在,会破坏 C++静态类型安全,我们针对这部 分特性要仔细处理。 - unions 联合体 - 类型转换 cast - 缩窄转换 narrowing conversions - 类型退化 type decay - 范围错误 range errors - void*类型指针
• 通过 const 来保证数据的不变性,防止数据被无意修改。 • 通过 gsl::span 等来保证 char 数组不越界,而不是通过运行时的 length 检查。 • 通过 static_assert 来进行编译时检查。
使用命名空间来限定作用域
全局变量,全局常量和全局类型定义由于都属于全局作用域,在项目中,使用第三 方库中容易出现冲突。
注意:如果模块中需要使用相关的扩展特性来,那么尽可能将这些特性封装成独立 的接口,并且可以通过编译选项关闭或者编译这些特性。对于这些扩展特性的使用, 请模块制定特性编程指南来指导这些特性的使用。

第5章 华为软件编码规范

第5章 华为软件编码规范

(4)"->"、"."前后不加空格。 p->id = pid; // "->"指针前后不加空格 (5) if、for、while、switch等与后面的括号间应 加空格,使if等关键字更为突出、明显。
if (a >= b && c > d) 注意:一行程序以小于80字符为宜,不要写得过长。
2014年9月24日星期三 15
2014年9月24日星期三 14
(3)"!"、"~"、"++"、"--"、"&"(地址运算符)等 单目操作符前后不加空格。
*p = 'a'; // 内容操作"*"与内容之间 flag = !isEmpty; // 非操作"!"与内容之间 p = &mem; // 地址操作"&" 与内容之间 i++; // "++","--"与内容之间
〔二〕 ======[ 注释 ]=======
2014年9月24日星期三
16
¹ 2-1:一般情况下,源程序有效注释量 必须在20%以上
说明:注释的原则是有助于对程序的阅读理解, 在该加的地方都加了,注释不宜太多也不能太 少,注释语言必须准确、易懂、简洁。
2014年9月24日星期三
17
¹ 2-2:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说 明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本 号、生成日期、作者、内容、功能、与其它文件的关系、修改日 志等,头文件的注释中还应有函数功能简要说明

华为软件编码规范

华为软件编码规范

华为软件编程规范和范例〔一〕=====[排版] ]=======.〔二〕======[注释]=======.〔三〕=====[标识符命名]=======.〔四〕=====[可读性]======.〔五〕=====[变量、结构]=====.〔六〕=====[函数、过程]=====.〔七〕=====[可测性]=====.〔八〕=====[程序效率]=====.〔九〕=====[质量保证]=====.〔十〕=====[代码编辑、编译、审查]=====.〔十一〕=====[代码测试、维护]=====.〔十二〕=====[宏]=====.〔一〕========[ 排版]========== ¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个说明:对于由开发工具自动生成的代码可以有不一致。

¹1-2:相对独立的程序块之间、变量说明之后必须加空行示例:如下例子不符合规范。

Int ni;if (!valid_ni(ni)){... // program code}repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;应如下书写Int ni;if (!valid_ni(ni)){... // program code}repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;¹1-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读示例:perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN+ STAT_SIZE_PER_FRAM * sizeof( _UL );act_task_table[frame_id * STAT_TASK_CHECK_NUMBER + index].occupied= stat_poi[index].occupied;act_task_table[taskno].duration_true_or_false= SYS_get_sccp_statistic_state( stat_item );report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER)&& (n7stat_stat_item_valid (stat_item))&& (act_task_table[taskno].result_data != 0));¹1-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首示例:if ((taskno < max_act_task_number)&& (n7stat_stat_item_valid (stat_item))){... // program code}for (i = 0, j = 0; (i < BufferKeyword[word_index].word_length)&& (j < NewKeyword.word_length); i++, j++){... // program code}for (i = 0, j = 0;(i < first_word_length) && (j < second_word_length);i++, j++){... // program code}¹1-5:若函数或过程中的参数较长,则要进行适当的划分示例:n7stat_str_compare((BYTE *) & stat_object,(BYTE *) & (act_task_table[taskno].stat_object),sizeof (_STAT_OBJECT));n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER+ index, stat_object );¹1-6:不允许把多个短语句写在一行中,即一行只写一条语句示例:如下例子不符合规范。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文档编号产品版本受控状态DC-SB-2003-1005V 1.0 内部产品名称:软件编程规范共页软件编程规范(仅供内部使用)北京世纪百合科技有限公司Beijing Centurial Lily Technology Co.,Ltd.版权所有不得复制文档修改记录目录1.引言 (4)1.1 目的 (4)1.2 范围 (4)2.规范 (4)2.1 文件 (4)2.2版面风格 (8)2.3 标识符命名 (12)2.4 函数与宏 (14)2.5 代码的可靠性 (18)3.附录:通用类型的公共定义 (23)1.引言1.1目的本规范的目的在于增加源代码的可读性,减少程序员对代码理解上的偏差,使程序员能够编写出可靠的代码,降低代码维护成本。

1.2范围本规范内容涉及范围包括:文件、版面、注释、标识符、变量和结构、函数、宏以及可理解性等。

本规范适用于公司开发的所有软件产品。

在新软件的编码过程中本规范必须执行。

2.规范2.1文件2.1.1头文件的名称一律为小写,格式为“子系统名_文件名.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 RESERVEDDescription: // 用于详细说明此程序文件完成的主要功能*************************************************************/#ifndef _IPF_IP_H#define _IPF_IP_H...<头文件正文>...#endif2.1.3头文件的定义要有层次,禁止交叉引用。

说明:头文件的层次设置为公共模块、私有模块。

头文件的引用次序为下层头文件引用上层头文件、私有头文件引用公共头文件,声明结构时尤其要注意,不允许出现交叉引用的情况。

示例:如下定义不符合规范头文件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/************************************************************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 “stdlib.h”#include <isdn_config.h>应该改作:#include <stdlib.h>#include “isdn_config.h”2.1.5头文件中只能声明变量类型,禁止定义变量。

说明:如果在头文件中定义变量,当有多个源文件引用该头文件时,会出现重复定义的错误。

示例:如下头文件是不规范的。

头文件isdn_a.h/************************************************************ALL RIGHTS RESERVEDDescription: 定义配置数据结构*************************************************************/#ifndef _ISDN_A_H#define _ISDN_A_Htypedef struct{...;}ISDN_ 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源文件必须加注释头。

源文件注释头格式为:/************************************************************ 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 isdn_InitConfig(void){WORD wConfigNumner;...; //program code}2.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.3do、while、switch、case、default、if、else、for等语句自占一行,且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 code 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 < 10;i++)北京世纪百合技术有限公司软件编程规范第 10 页共 24页{...; //program code}2.2.4函数的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。

示例:如下例子不符合规范。

int isdn_Config(void){...; // program codereturn 0;}应该改为int isdn_Config(void){...; // program codereturn 0;}示例:如下例子不符合规范。

typedef struct{WORD wSlot;WORD wPort;}ISDN_CONFIG;应该改为typedef struct{WORD wSlot;WORD wPort;}ISDN_CONFIG;2.2.5在switch的处理程序块中,case和default语句下的处理语句也要遵从语句缩进要求。

示例:以下写法是不规范的switch (wEvent){case 1:...; //program codebreak;}应该改为:switch (wEvent){case 1:...; //program codebreak;default:break;}2.2.6程序块的分界符(大括号'{'和'}')应各独占一行并且位于同一列,同时与引用它们的语句左对齐。

相关文档
最新文档