华为内部代码规范
华为代码规范文档
代码规范文档目录1 概述 (5)1.1 编写目的 (5)1.2 文档约定 (5)1.3 预期的读者和阅读建议 (5)1.4 参考文献 (5)2 排版要求 (5)2.1 程序块缩进 (5)2.2 程序块之间空行 (5)2.3 长语句和长表达式 (6)2.4 循环、判断等长表达式或语句 (7)2.5 长参数 (7)2.6 短语句 (8)2.7 条件、循环语句 (8)2.8 语句对齐 (8)2.9 函数、过程和结构等语句块 (9)2.10 程序块分界符 (9)2.11 操作符前后空格 (10)2.12 其他 (11)3 注释 (11)3.1 有效注释量 (11)3.2 公司标识 (11)3.3 说明性文件 (12)3.4 源文件头 (13)3.5 函数头部说明 (13)3.6 注释与代码一致 (14)3.7 注释内容 (14)3.8 注释缩写 (14)3.9 注释位置 (14)3.10 变量、常量注释 (15)3.11 数据结构的注释 (15)3.12 全局变量 (16)3.13 注释缩排 (16)3.14 注释与代码之间空行 (17)3.15 变量定义、分支语句 (17)3.16 其他 (19)4 标识符命名 (20)4.1 命名清晰 (20)4.2 特殊命名需注释 (21)4.3 命名风格保持一致 (21)4.4 变量命名 (21)4.5 命名规范与系统风格一致 (21)4.6 其他 (22)5 可读性 (23)5.1 运算符优先级 (23)5.2 避免直接使用数字作为标识符 (23)5.3 其他 (24)6 变量、结构 (25)6.1 公共变量 (25)6.2 公共变量说明 (25)6.3 公共变量访问说明 (25)6.4 公共变量赋值 (26)6.5 防止局部变量与公共变量同名。
(26)6.6 严禁使用未经初始化的变量作为右值。
(26)6.7 其他 (26)7 函数、过程 (34)7.1 对所调用函数的错误返回码要仔细、全面地处理。
华为编程规范和示例
目录1 排版 62 注释113 标识符命名184 可读性205 变量、结构226 函数、过程287 可测性368 程序效率409 质量保证4410 代码编辑、编译、审查5011 代码测试、维护5212 宏531 排版¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个。
说明:对于由开发工具自动生成的代码可以有不一致。
¹1-2:相对独立的程序块之间、变量说明之后必须加空行。
示例:如下例子不符合规范。
if (!valid_ni(ni)){... // program code}repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].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:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
华为编程规范
华为编程规范华为是一家世界知名的信息通信技术(ICT)解决方案供应商,为全球超过170个国家和地区的企业和消费者提供产品和服务。
在华为的软件开发过程中,编程规范起着至关重要的作用。
良好的编程规范有助于提高代码的质量和可维护性,减少错误和调试时间,提高开发效率。
以下是华为编程规范的一些核心要点:1. 命名规范:变量、函数、类等命名应具有清晰的含义,并遵循驼峰命名法。
变量和函数名应尽量简短明了,避免使用无意义的名字。
同时,要避免使用拼音或缩写,提高代码的可读性。
2. 注释规范:良好的注释是代码可读性的重要组成部分。
应在需要解释的地方进行注释,对于复杂的算法和逻辑,要详细解释思路和实现方法。
此外,对于代码片段的用途,也可以加上简短的注释。
注释应使用英文,避免使用拼音或其他不常见的语言。
3. 缩进和空格:合理的缩进和空格可以提高代码的可读性。
在华为的编程规范中,使用四个空格作为一个缩进层级。
在运算符和逗号等地方留有适当的空格,使代码更易于阅读。
4. 函数规范:函数应尽量简短,一个函数应有一个明确的目的。
函数命名要具有清晰的语义,能够准确描述函数的功能。
参数应尽量避免过多,遵循最小化设计原则。
5. 异常处理:在代码中应该考虑到可能出现的异常情况,并进行相应的处理。
捕获异常后,应该写明异常类型,并书写明确的处理逻辑。
6. 安全性考虑:在编写代码时,应始终考虑安全性。
避免使用已知存在安全漏洞的函数和方法,对于输入的数据进行合理的校验和过滤,防止代码被恶意攻击者利用。
7. 代码格式化:代码格式化可以提高代码的可读性,使代码更易于维护。
在华为的编程规范中,要求使用一致的缩进和空格,合理分行和对齐,并采用一致的命名风格。
8. 可移植性:考虑到不同平台和操作系统的差异,编写代码时应注重可移植性。
避免使用与操作系统和平台相关的特性和函数,尽量使用标准库和接口。
9. 性能优化:在编写代码时,应注重性能优化。
避免不必要的计算和内存开销,合理选择数据结构和算法。
华为公司编程语法规范
目录1 排版 62 注释113 标识符命名184 可读性205 变量、结构226 函数、过程287 可测性368 程序效率409 质量保证4410 代码编辑、编译、审查5011 代码测试、维护5212 宏531 排版¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个。
说明:对于由开发工具自动生成的代码可以有不一致。
¹1-2:相对独立的程序块之间、变量说明之后必须加空行。
示例:如下例子不符合规范。
if (!valid_ni(ni)){... // program code}repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].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:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
华为软件编码规范
华为软件编程规范和范例〔一〕=====[排版] ]=======.〔二〕======[注释]=======.〔三〕=====[标识符命名]=======.〔四〕=====[可读性]======.〔五〕=====[变量、结构]=====.〔六〕=====[函数、过程]=====.〔七〕=====[可测性]=====.〔八〕=====[程序效率]=====.〔九〕=====[质量保证]=====.〔十〕=====[代码编辑、编译、审查]=====.〔十一〕=====[代码测试、维护]=====.〔十二〕=====[宏]=====.〔一〕========[ 排版]========== ¹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:不允许把多个短语句写在一行中,即一行只写一条语句示例:如下例子不符合规范。
2024版年度Verilog编程规范(华为)
通过定期的培训、分享和宣传活动,提高开 发人员对Verilog编程规范的认识和重视程度。
引入自动化检查工具
建立持续改进机制
研究和引入自动化检查工具,对Verilog代码 进行静态分析和规范检查,进一步提高代码 质量和开发效率。
建立规范的持续改进机制,收集开发人员的 反馈和建议,及时调整和优化规范内容。
同步/异步通信
根据实际需求选择同步或异步通信方式,确保子模块间的协同工 作。
20
时钟域划分及时序收敛策略
时钟域划分
根据系统时钟需求,将设计划分为不同的时钟域, 避免跨时钟域操作带来的问题。
时序收敛策略
采用合适的时序收敛方法,如时钟同步、异步 FIFO等,确保数据在不同时钟域间正确传输。
时序约束与验证
2024/2/2
01 注释应清晰明了,准确描述代码的功能和 实现方法。
02 注释应与代码同步更新,避免注释与代码 不一致。
03
注释应使用中文或英文,避免使用其他语 言。
04
对于重要的函数、模块和算法,应在文件 开头添加注释说明。
14
空格和换行使用原则
关键字与括号之间应加空 格,如`if (`、`for (`等。
开发效率提高
规范的编码风格使得开发人员能够更快速地理解和修改代码,提高 了开发效率。
团队协作更加顺畅
统一的编程规范促进了团队成员之间的协作,减少了因代码风格不同 而产生的沟通成本。
2024/2/2
31
未来改进方向
持续优化规范内容
加强规范培训和宣传
根据业界最佳实践和团队实际经验,持续优 化Verilog编程规范的内容,以适应新的技术 和应用场景。
一种硬件描述语言 (Hardware Description Language,HDL),用于 描述数字电路和系统。
华为代码规范文档
代码规范文档目录1 概述 (5)1.1 编写目的 (5)1.2 文档约定 (5)1.3 预期的读者和阅读建议 (5)1.4 参考文献 (5)2 排版要求 (5)2.1 程序块缩进 (5)2.2 程序块之间空行 (5)2.3 长语句和长表达式 (6)2.4 循环、判断等长表达式或语句 (7)2.5 长参数 (7)2.6 短语句 (8)2.7 条件、循环语句 (8)2.8 语句对齐 (8)2.9 函数、过程和结构等语句块 (9)2.10 程序块分界符 (9)2.11 操作符前后空格 (10)2.12 其他 (11)3 注释 (11)3.1 有效注释量 (11)3.2 公司标识 (11)3.3 说明性文件 (12)3.4 源文件头 (13)3.5 函数头部说明 (13)3.6 注释与代码一致 (14)3.7 注释内容 (14)3.8 注释缩写 (14)3.9 注释位置 (14)3.10 变量、常量注释 (15)3.11 数据结构的注释 (15)3.12 全局变量 (16)3.13 注释缩排 (16)3.14 注释与代码之间空行 (17)3.15 变量定义、分支语句 (17)3.16 其他 (19)4 标识符命名 (20)4.1 命名清晰 (20)4.2 特殊命名需注释 (21)4.3 命名风格保持一致 (21)4.4 变量命名 (21)4.5 命名规范与系统风格一致 (22)4.6 其他 (22)5 可读性 (23)5.1 运算符优先级 (23)5.2 避免直接使用数字作为标识符 (24)5.3 其他 (24)6 变量、结构 (25)6.1 公共变量 (25)6.2 公共变量说明 (26)6.3 公共变量访问说明 (26)6.4 公共变量赋值 (26)6.5 防止局部变量与公共变量同名。
(26)6.6 严禁使用未经初始化的变量作为右值。
(26)6.7 其他 (27)7 函数、过程 (34)7.1 对所调用函数的错误返回码要仔细、全面地处理。
华为软件编码规范
华为软件编程规范和范例〔一〕=====[排版] ]=======.〔二〕======[注释]=======.〔三〕=====[标识符命名]=======.〔四〕=====[可读性]======.〔五〕=====[变量、结构]=====.〔六〕=====[函数、过程]=====.〔七〕=====[可测性]=====.〔八〕=====[程序效率]=====.〔九〕=====[质量保证]=====.〔十〕=====[代码编辑、编译、审查]=====.〔十一〕=====[代码测试、维护]=====.〔十二〕=====[宏]=====.〔一〕========[ 排版]========== ¹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:不允许把多个短语句写在一行中,即一行只写一条语句示例:如下例子不符合规范。
华为编程规范全PDF
// 修改历史记录列表,每条修改记录应包括修改日期、修改
// 者及修改内容简述
1. Date:
Author:
Modification:
2. ... *************************************************/
¹2-3:源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、 主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包 含在内。
由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格, 如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不 必加空格,因为在 C/C++语言中括号已经是最清晰的标志了。 在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操 作符留空格时不要连续留两个以上空格。 示例: (1) 逗号、分号只在后面加空格。 int a, b, c;
Version:
// 版本信息
Function List: // 主要函数及其功能
1. -------
History:
// 历史修改记录
<author> <time> <version > <desc>
David 96/10/12 1.0 build this moudle
***********************************************************/
for (i = 0, j = 0; (i < BufferKeyword[word_index].word_length) && (j < NewKeyword.word_length); i++, j++)
华为编程规范
华为编程规范华为编程规范是指在华为公司内部进行软件开发时所遵守的一套规范和标准,旨在提高代码的质量和可维护性。
下面是华为编程规范的主要内容。
一、命名规范:1. 变量和函数名应采用有意义的名称,尽量避免使用缩写或简写。
2. 变量名和函数名应使用小驼峰命名法,即首字母小写,后续单词首字母大写。
3. 常量名应使用大写字母和下划线,以增加可读性。
4. 类名应使用大驼峰命名法,即每个单词首字母大写。
5. 文件名应与其中的公共类名一致。
二、注释规范:1. 在每个函数的开头添加函数的功能说明,参数说明和返回值说明。
2. 在关键性代码部分添加注释,说明代码的逻辑。
3. 在需要修正或改进的代码部分添加TODO注释,以便后续修复。
三、代码风格:1. 缩进使用4个空格而不是Tab键。
2. 每行代码的长度不能超过80个字符。
3. 在二元操作符两边添加空格,例如 a + b。
4. 大括号应另起一行,不应与关键字在同一行。
5. 每个语句结束后都应该添加分号。
四、异常处理:1. 捕获异常时应尽量具体,不应捕获顶层异常。
2. 异常处理代码应与正常逻辑代码分离,以提高代码的可读性。
3. 异常处理代码块应添加注释,说明捕获的异常类型和处理的方法。
五、函数规范:1. 函数的长度应控制在100行以内,避免函数过长和复杂。
2. 函数的参数应尽量少,可以通过封装成结构体或类的方式来减少参数数量。
3. 函数应只完成一个功能,不应既完成数据处理又完成界面显示等功能。
六、代码复用:1. 尽量使用现有的类和框架来实现功能,避免重复造轮子。
2. 重复的代码应抽取成函数或方法来复用,提高代码的可维护性。
3. 提高代码的可移植性,使其可以在不同的平台和环境下复用。
七、测试规范:1. 添加单元测试用例,覆盖所有的代码分支,确保代码的正确性。
2. 针对不同的输入情况,测试代码的边界问题和异常情况。
3. 添加性能测试用例,确保代码在大数据量和高并发情况下的性能表现。
编码规范(华为)
软件编程规范总则
1 排版
¹1-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低 优先级操作符处划分新行,操作符放在新行之首。 示例: if ((taskno < max_act_task_number) && (n7stat_stat_item_valid (stat_item))) { ... // program code }
act_task_table[taskno].duration_true_or_false = SYS_get_sccp_statistic_state( stat_item );
report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER)
仅供内部使用
2
Simpo PDF Merge and Split Unregistered Version -
录
6 11 18 20 22 28 36 40 44 50 52 53
Simpo PDF Merge and Split Unregistered Version -
软件编程规范总则
1 排版
1 排版
¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 ¹1-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if (!valid_ni(ni)) { ... // program code } repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni;
if (...) { ... // program code }
华为JAVA编码规范介绍
华为JAVA编码规范介绍1.程序块采用缩进风格,空格为4个.说明:对于开发工具自动生成的代码可以不一致2.分界符(如大括号{和})应各自占一行并且在同一列,同时与引用它们的语句左对齐,在方法的开始,类和接口的定义,以及if,for,do,while,switch,case语句都要采用上述缩进说明:for(…){…//your code}3.较长(>80字符)的语句,表达式和参数要分多行,长表达式要在低优先级操作符划分新行,操作符放在行首,新行要适当缩进,整齐,语句可读.说明:if(filename != null&& new File(logPath+filename).length() < logConfig.getFileSize()){…//your code}4.一行只写一条语句说明:LogFilename wow = null;LogFilename that = null;5.if,for,do,switch,while,case,default各占一行,它们的执行语句无论多少都要加{}说明:if(writeToFile){writeFileThread.interrupt();}6.相对独立的程序块,变量,说明要加空行说明:if(log.getLevel() < log.getRecord()){return ;}//空行LogWrite writer;7.对齐只用空格键,不用TAB键说明:以免使用不同的编辑器阅读程序时,因TAB键所设置的空格数不同而造成程序布局不整齐,JBuildr,UltraEdit等编辑环境,支持行首TAB替换成空格,应将该选项打开8.两个以上的关键字,变量,常量进行对等操作时,操作符之前,之后或前后要加空格,进行非对等操作时,如果是关系密切的立即操作符,后面不加空格(如.操作符)说明:采用这种松散方式编写代码目的是让程序更加清晰,由于空格所产生的清晰性是相对的,所以在已经很清晰的语句中没有必要留空格,如果语句已足够清晰,则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为java中括号已经是很清晰的标志了.在长句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部中不加空格,给操作符留空格时不要连续留两个以上空格9.类属性和方法不要交叉放置,不同存取范围的属性和方法也不要交叉放置说明:类定义:{类公有属性定义;类保护属性定义;类私有属性定义;类公有方法定义;类保护方法定义;类私有方法定义;}10.源程序的有效注释量必须在30%以上11.包的注释写入一个名为package.html的html格式的说明文件放入当前路径12.包的注释内容:本包作用,详细描述本包内容,产品模块名称及版本,公司版本说明:一句话描述详细描述产品模块公司版本信息13.文件注释:写入文件头部,包名之前14.文件注释内容:版本说明,描述信息,修改历史,生成日期说明:/**文件名*版权*描述*修改人*修改时间*修改内容*跟踪单号*修改单号*/15.类和接口注释:放在package注释之后,class或interface之前16.类和接口注释内容:类的注释要一句话功能描述,功能详细描述说明:/***<一句话功能简述>*<功能详细描述>*@author*@version*@see [相关类/方法]*@since [产品/模块版本]*@deprecated (表示不建议使用该类或者接口)17.类属性,公有和保护方法注释:写在类属性,公有和保护方法上面18.成员变量注释内容:成员变量的意义,目的,功能,可能被用到的地方19.公有和保护方法注释的内容:方法的一句话功能描述,功能详细描述,输入参数,输出参数,返回值,违例说明:/***@param*@return*@exception /throws*/20.对于方法内部用throw抛出的异常,要在方法的注释中标明,对于调用其他方法抛出的异常,选主要的在注释中说明,对于非RuntimeException,即throws子句声明会抛出的异常,必须在方法的注释中标明21.注释应与描述的代码相近,对代码的注释应放在代码上方或者右方(单行注释)相邻位置,不可放在下面,如放于上方则与上面代码用空行隔开22.注释与描述的内容进行同样的缩进23.对变量的定义和分支语句,必须加以注释24.对于switch下的case语句,如果处理完一个case要进入下一个case,必须在该case处理完,下一个case前加上明确的注释说明:这样比较清楚程序编写者的意图,有效防止无故遗漏break语句25.边写代码边写注释,修改代码同时修改注释保证代码和注释一致,没用的注释要删除26.注释内容要清楚,明了,含义明确,防止二义性27.不要在注释中用缩写说明:除非必要,在使用缩写时或之前,应对缩写进行必要的说明28.不要在一行代码或表达式中间加注释说明:除非必要,不应在代码或表达式中间插入注释,否则容易使代码可理解性变差。
华为软件编程规范总则
目录1 排版 (2)2 注释 (8)规则2-7:避免在注释中使用缩写,特别是非常用缩写。
(10)3 标识符命名 (16)4 可读性 (19)5 变量、结构 (21)6 函数、过程 (28)建议6-14:避免使用无意义或含义不清的动词为函数命名。
(33)建议6-15:函数的返回值要清楚、明了,让使用者不容易忽视错误情况。
(33)7 可测性 (37)8 程序效率 (42)9 质量保证 (47)10 代码编辑、编译、审查 (54)11 代码测试、维护 (56)12 宏 (58)1 排版¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个。
说明:对于由开发工具自动生成的代码可以有不一致。
¹1-2:相对独立的程序块之间、变量说明之后必须加空行。
示例:如下例子不符合规范。
if (!valid_ni(ni)){... // program code}repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].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:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
(完整版)华为软件编程规范
文档编号产品版本受控状态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头文件的定义要有层次,禁止交叉引用。
华为内部代码规范
应如下书写
仅供内部使用 4
软件编程规范总则
1 排版
rect.length = 0; rect.width = 0;
¹1-7:if、for、do、while、case、switch、default等语句自占一行,且if、for、
(5) if、for、while、switch 等与后面的括号间应加空格,使 if 等关键字更为突出、 明显。 if (a >= b && c > d)
½1-1:一行程序以小于80字符为宜,不要写得过长。
仅供内部使用 7
软件编程规范总则
2 注释
2 注释
¹2-1:一般情况下,源程序有效注释量必须在20%以上。 说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不 能太少,注释语言必须准确、易懂、简洁。
包含在内。
/*************************************************
Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.
File name:
// 文件名
Author:
Version:
Date: // 作者、版本及完成日期
示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要 包含在内。
仅供内部使用 8
软件编程规范总则
2 注释
/************************************************************
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
软件编程规范总则
1 排版
¹1-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低 优先级操作符处划分新行,操作符放在新行之首。
¹2-2:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应
进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的
关系、修改日志等,头文件的注释中还应有函数功能简要说明。
示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要
示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要 包含在内。
仅供内部使用 8
软件编程规范总则
2 注释
/************************************************************
Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.
Function:
// 函数名称
Description: // 函数功能、性能等的描述
Calls:
// 被本函数调用的函数清单
Called By:
// 调用本函数的函数清单
Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)
Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)
说明:采用这种松散方式编写代码的目的是使代码更加清晰。 由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格, 如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间 不必加空格,因为在 C/C++语言中括号已经是最清晰的标志了。 在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给 操作符留空格时不要连续留两个以上空格。
Input:
// 输入参数说明,包括每个参数的作
// 用、取值说明及参数间关系。
Output:
// 对输出参数的说明。
Return:
// 函数返回值的说明
(5) if、for、while、switch 等与后面的括号间应加空格,使 if 等关键字更为突出、 明显。 if (a >= b && c > d)
½1-1:一行程序以小于80字符为宜,不要写得过长。
仅供内部使用 7
软件编程规范总则
2 注释
2 注释
¹2-1:一般情况下,源程序有效注释量必须在20%以上。 说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不 能太少,注释语言必须准确、易懂、简洁。
David 96/10/12 1.0 build this moudle
***********************************************************/
说明:Description 一项描述本文件的内容、功能、内部各部分之间的关系及本文件与
其它文件关系等。History 是修改历史记录列表,每条修改记录应包括修改日期、修改
示例: 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++)
示例:如下例子不符合规范。 for (...) {
... // program code }
if (...) { ... // program code }
仅供内部使用 5
软件编程规范总则
1 排版
void example_fun( void ) { ... // program code }
应如下书写。 for (...) {
act_task_table[taskno].duration_true_or_false = SYS_get_sccp_statistic_state( stat_item );
report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER)
仅供内部使用 2
¹1-9:函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求。
¹1-10:程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一 列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以 及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。
应如下书写 if (!valid_ni(ni)) {
... // program code }
repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni;
¹1-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行, 操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
{ ... // program code
}
for (i = 0, j = 0; (i < first_word_length) && (j < second_word_length); i++, j++)
{ ... // program code
}
¹1-5:若函数或过程中的参数较长,则要进行适当的划分。 示例:
do、while等语句的执行语句部分无论多少都要加括号{}。
示例:如下例子不符合规范。 if (pUserCR == NULL) return;
应如下书写: if (pUserCR == NULL) {
return; }
¹1-8:对齐只使用空格键,不使用TAB键。 说明:以免用不同的编辑器阅读程序时,因 TAB 键所设置的空格数目不同而造成程序布局 不整齐,不要使用 BC 作为编辑器合版本,因为 BC 会自动将 8 个空格变为一个 TAB 键, 因此使用 BC 合入的版本大多会将缩进变乱。
示例: (1) 逗号、分号只在后面加空格。 int a, b, c;
仅供内部使用 6
软件编程规范总则
1 排版
(2)比较操作符, 赋值操作符"="、 "+=",算术操作符"+"、"%",逻辑操作符"&&"、 "&",位域操作符"<<"、"^"等双目操作符的前后加空格。 if (current_time >= MAX_TIME_VALUE) a = b + c; a *= 2; a = b ^ 2;
目录
1 排版
6
2 注释
11
3 标识符命名
18
4 可读性
20
5 变量、结构
22
6 函数、过程
28
7 可测性
36
8 程序效率
40
9 质量保证
44
10 代码编辑、编译、审查
501
软件编程规范总则
1 排版
1 排版
¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。
¹1-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if (!valid_ni(ni)) { ... // program code } repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni;