(完整word版)华为代码规范.pdf





《(完整word版)华为代码规范.pdf》由会员分享,可在线阅读,更多相关《(完整word版)华为代码规范.pdf(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、华为代码规范华为代码规范(完整word版)华为代码规范-第1页(完整word版)华为代码规范-第1页目录目录1概述.51.1编写目的.51.2文档约定.51.3预期的读者和阅读建议.51.4参考文献.5排版要求.52.1程序块缩进.52.2程序块之间空行.52.3长语句和长表达式.62.4循环、判断等长表达式或语句.72.5长参数.72.6短语句.82.7条件、循环语句.82.8语句对齐.82.9函数、过程和结构等语句块.92.10程序块分界符.92.11操作符前后空格.102.12其他.11注释.113.1有效注释量.113.2公司标识.113.3说明性文件.123.4源文件头.133.5函
2、数头部说明.133.6注释与代码一致.143.7注释内容.143.8注释缩写.143.9注释位置.143.10变量、常量注释.153.11数据结构的注释.153.12全局变量.163.13注释缩排.163.14注释与代码之间空行.173.15变量定义、分支语句.173.16其他.19标识符命名.204.1命名清晰.204.2特殊命名需注释.214.3命名风格保持一致.214.4变量命名.214.5命名规范与系统风格一致.224.6其他.22可读性.235.1运算符优先级.232345第 2 页共 69 页(完整word版)华为代码规范-第2页(完整word版)华为代码规范-第2页5.2避免直接
3、使用数字作为标识符.245.3其他.246变量、结构.256.1公共变量.256.2公共变量说明.266.3公共变量访问说明.266.4公共变量赋值.266.5防止局部变量与公共变量同名。.266.6严禁使用未经初始化的变量作为右值。.266.7其他.277函数、过程.347.1对所调用函数的错误返回码要仔细、全面地处理。.347.2明确函数功能,精确(而不是近似)地实现函数设计。.347.3局部变量.347.4全局变量.347.5接口函数参数.357.6其他.358可测性.448.1调测开关.448.2打印信息.458.3单元测试.458.4集成测试.458.5断言使用.458.6设置与取消
4、有关测试手段时,不能影响软件功能功能.488.7版本维护.488.8其他.489程序效率.509.1编程时要经常注意代码的效率。.509.2提高代码效率.509.3全局效率高于局部效率.519.4提高代码空间效率.519.5循环体内工作量最小化.529.6其他.5310质量保证.5610.1在软件设计过程中构筑软件质量。.5610.2代码质量保证优先原则.5610.3只引用属于自己的存贮空间。.5610.4防止引用已经释放的内存空间。.5610.5内存及时释放.5710.6文件句柄及时关闭.5710.7防止内存操作越界.5810.8认真处理程序所能遇到的各种出错情况.5910.9初始化变量.5
5、910.10数据一致性检查.5910.11严禁随意更改其它模块或系统的有关设置和配置.5910.12不能随意改变与其它模块的接口.59第 3 页共 69 页(完整word版)华为代码规范-第3页(完整word版)华为代码规范-第3页10.13系统接口.5910.14编程时,要防止差 1 错误.6110.15操作符检查.6110.16分支语句写完整.6210.17使用 return 语句.6210.18不要滥用 goto 语句.6210.19其他.6211代码编辑、编译、审查.6511.1打开编译器的所有告警开关对程序进行编译.6511.2在产品软件(项目组)中,要统一编译开关选项.6511.3
6、通过代码走读及审查方式对代码进行检查。.6511.4测试部测试产品之前,应对代码进行抽查及评审.6511.5其他.6512代码测试、维护.6712.1单元测试要求至少达到语句覆盖.6712.2单元测试开始要跟踪每一条语句,并观察数据流及变量的变化.6712.3清理、整理或优化后的代码要经过审查及测试。.6712.4代码版本升级要经过严格测试.6712.5使用工具软件对代码版本进行维护.6712.6正式版本上软件的任何修改都应有详细的文档记录.6712.7其他.6713宏.6813.1用宏定义表达式时,要使用完备的括号.6813.2将宏所定义的多条表达式放在大括号中.6813.3使用宏时,不允许
7、参数发生变化.69第 4 页共 69 页(完整word版)华为代码规范-第4页(完整word版)华为代码规范-第4页1 1 概述概述1.11.1 编写目的编写目的为规范软件开发人员的代码编写提供参考依据和统一标准。1.21.2 文档约定文档约定说明本文档中所用到的专用术语定义或解释,缩略词定义。1.31.3 预期的读者和阅读建议预期的读者和阅读建议本文档适用于所有软件开发人员。1.41.4 参考文献参考文献列出有关的参考文件,如:a属于本项目的其他已发表文件;b本文件中各处引用的文档资料。列出这些文件的标题、作者,说明能够得到这些文件资料的来源。2 2 排版要求排版要求2.12.1程序块缩进程
8、序块缩进程序块要采用缩进风格编写,缩进的空格数为程序块要采用缩进风格编写,缩进的空格数为 4 4 个。个。说明:对于由开发工具自动生成的代码可以有不一致。2.22.2程序块之间空行程序块之间空行相对独立的程序块之间、变量说明之后必须加空行。相对独立的程序块之间、变量说明之后必须加空行。示例:如下例子不符合规范。if(!valid_ni(ni)./program code第 5 页共 69 页(完整word版)华为代码规范-第5页(完整word版)华为代码规范-第5页repssn_ind=ssn_dataindex.repssn_index;repssn_ni =ssn_dataindex.ni
9、;应如下书写if(!valid_ni(ni)./program coderepssn_ind=ssn_dataindex.repssn_index;repssn_ni =ssn_dataindex.ni;2.32.3长语句和长表达式长语句和长表达式较长的语句(较长的语句(8080字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。示例:perm_count_msg.head.len=N
10、O7_TO_STAT_PERM_COUNT_LEN +STAT_SIZE_PER_FRAM*sizeof(_UL);act_task_tableframe_id*STAT_TASK_CHECK_NUMBER+index.occupied =stat_poiindex.occupied;act_task_tabletaskno.duration_true_or_false =SYS_get_sccp_statistic_state(stat_item);report_or_not_flag=(taskno MAX_ACT_TASK_NUMBER)&(n7stat_stat_item_valid(
11、stat_item)&(act_task_tabletaskno.result_data!=0);第 6 页共 69 页(完整word版)华为代码规范-第6页(完整word版)华为代码规范-第6页2.42.4循环、判断等长表达式或语句循环、判断等长表达式或语句循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。处划分新行,操作符放在新行之首。示例:if(taskno max_act_task_number)&(n7stat_stat_ite
12、m_valid(stat_item)./program codefor(i=0,j=0;(i BufferKeywordword_index.word_length)&(j NewKeyword.word_length);i+,j+)./program codefor(i=0,j=0;(i first_word_length)&(j ),后不应加空格。),后不应加空格。说明:采用这种松散方式编写代码的目的是使代码更加清晰。由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因
13、为在 C/C+语言中括号已经是最清晰的标志了。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。示例:(1)逗号、分号只在后面加空格。int a,b,c;(2)比较操作符,赋值操作符=、+=,算术操作符+、%,逻辑操作符&、&,位域操作符=MAX_TIME_VALUE)a=b+c;a*=2;第 10 页共 69 页(完整word版)华为代码规范-第10页(完整word版)华为代码规范-第10页a=b 2;(3)!、+、-、&(地址运算符)等单目操作符前后不加空格。*p=a;/内容操作*与内容之间flag=!isEmpty;/非操
14、作!与内容之间p=&mem;/地址操作&与内容之间i+;/+,-与内容之间(4)-、.前后不加空格。p-id=pid;/-指针前后不加空格(5)if、for、while、switch 等与后面的括号间应加空格,使if 等关键字更为突出、明显。if(a=b&c d)2.122.12其其他他2.12.12.12.1一一行程序以小于行程序以小于 8080 字符为宜,不要写得过长。字符为宜,不要写得过长。3 3 注释注释3.13.1有效注释量有效注释量一般情况下,源程序有效注释量必须在一般情况下,源程序有效注释量必须在 2020以上。以上。说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,
15、注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。3.23.2公司标识公司标识在头文件中加入公司标识。示例如下:*/*第 11 页共 69 页(完整word版)华为代码规范-第11页(完整word版)华为代码规范-第11页 */*Copyright(c)1996-1998 XXXXXX Company*/*xxxxxxxx版权所有 1996-1998*/*/*PROPRIETARY RIGHTS ofXXXXXX Companyare involved in the*/*subjectmatter of this material.All manufacturing,reproductio
16、n,use,*/*andsales rights pertaining to this subject matter are governed by the*/*license agreement.The recipient of this software implicitly accepts */*the terms of thelicense.*/*本软件文档资料是 xxx 公司的资产,任何人士阅读和使用本资料必须获得 */*相应的书面授权,承担保密责任和接受相应的法律约束.*/*/*/3.33.3说明性文件说明性文件说明性文件(如头文件说明性文件(如头文件.h.h 文件、文件、.inc
17、.inc 文件、文件、.def.def 文件、编译说明文件文件、编译说明文件.cfg.cfg 等)头部应进行注释,注释等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。的注释中还应有函数功能简要说明。示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。/*Copyright(C),1996-1998,xxxxx.Co.,Ltd.File name:/文件名 Author:
18、Version:Date:/作者、版本及完成日期 Description:/用于详细说明此程序文件完成的主要功能,与其他模块 /或函数的接口,输出值、取值范围、含义及参数间的控 /制、顺序、独立或依赖等关系 Others:/其它内容的说明 Function List:/主要函数列表,每条记录应包括函数名及功能简要说明 1.History:/修改历史记录列表,每条修改记录应包括修改日期、修改 /者及修改内容简述第 12 页共 69 页(完整word版)华为代码规范-第12页(完整word版)华为代码规范-第12页 1.Date:Author:Modification:2.*/3.43.4源文件头
19、源文件头源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及功能、主要函数及其功能、修改日志等。其功能、修改日志等。示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。/*Copyright(C),1988-1999,Xxxxxx Tech.Co.,Ltd.FileName:test.cpp Author:Version:Date:Description:/模块描述 Version:/版本信息 Function List:/主要函数及其功能 1.-His
20、tory:/历史修改记录 David 96/10/12 1.0 build this moudle*/说明:Description 一项描述本文件的内容、功能、内部各部分之间的关系及本文件与其它文件关系等。History 是修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述。3.53.5函数头部说明函数头部说明函数头部应进行注释,列出:函数的目的函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、功能、输入参数、输出参数、返回值、调用关系(函数、表)等。表)等。示例:下面这段函数的注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内
21、。/*Function:/函数名称第 13 页共 69 页(完整word版)华为代码规范-第13页(完整word版)华为代码规范-第13页 Description:/函数功能、性能等的描述 Calls:/被本函数调用的函数清单 Called By:/调用本函数的函数清单 Table Accessed:/被访问的表(此项仅对于牵扯到数据库操作的程序)Table Updated:/被修改的表(此项仅对于牵扯到数据库操作的程序)Input:/输入参数说明,包括每个参数的作 /用、取值说明及参数间关系。Output:/对输出参数的说明。Return:/函数返回值的说明 Others:/其它说明*/3.
22、63.6注释与代码一致注释与代码一致边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。除。3.73.7注释内容注释内容注释的内容要清楚、明了,含义准确,防止注释二义性。注释的内容要清楚、明了,含义准确,防止注释二义性。说明:错误的注释不但无益反而有害。3.83.8注释缩写注释缩写避免在注释中使用缩写。避免在注释中使用缩写。说明:在使用缩写时或之前,应对缩写进行必要的说明。3.93.9注释位置注释位置注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句
23、的注释)相邻位置,不注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。可放在下面,如放于上方则需与其上面的代码用空行隔开。示例:如下例子不符合规范。例 1:/*get replicate sub system index and net indicator*/第 14 页共 69 页(完整word版)华为代码规范-第14页(完整word版)华为代码规范-第14页repssn_ind=ssn_dataindex.repssn_index;repssn_ni=ssn_dataindex.ni;例 2:reps
24、sn_ind=ssn_dataindex.repssn_index;repssn_ni=ssn_dataindex.ni;/*get replicate sub system index and net indicator*/应如下书写/*get replicate sub system index and net indicator*/repssn_ind=ssn_dataindex.repssn_index;repssn_ni=ssn_dataindex.ni;3.103.10 变量、常量注释变量、常量注释对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,
25、说明对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。示例:/*active statistic task number*/#define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000/*active statistic task number*/3.113.11 数据结构的注释数据结构的注释数据结构声明数据结构声明(包括数组、结构、类、枚举等包括数组、结构、类、枚举等)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 华为 代码 规范

限制150内