华为软件编程地要求规范

合集下载

华为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++语言通用编程规范.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 来进行编译时检查。
使用命名空间来限定作用域
全局变量,全局常量和全局类型定义由于都属于全局作用域,在项目中,使用第三 方库中容易出现冲突。
注意:如果模块中需要使用相关的扩展特性来,那么尽可能将这些特性封装成独立 的接口,并且可以通过编译选项关闭或者编译这些特性。对于这些扩展特性的使用, 请模块制定特性编程指南来指导这些特性的使用。

华为软件编码规范

华为软件编码规范

华为软件编程规范和范例〔一〕=====[排版] ]=======.〔二〕======[注释]=======.〔三〕=====[标识符命名]=======.〔四〕=====[可读性]======.〔五〕=====[变量、结构]=====.〔六〕=====[函数、过程]=====.〔七〕=====[可测性]=====.〔八〕=====[程序效率]=====.〔九〕=====[质量保证]=====.〔十〕=====[代码编辑、编译、审查]=====.〔十一〕=====[代码测试、维护]=====.〔十二〕=====[宏]=====.〔一〕========[ 排版]========== ¹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编程规范(华为)

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),用于 描述数字电路和系统。

C_C++编程规范-华为标准-精

C_C++编程规范-华为标准-精
值范围及公共变量间的关系。 5-3:明确公共变量与操作此公共变量的函数或过
程的关系,如访问、修改及创建等。 5-4:当向公共变量传递数据时,要十分小心,防
止赋与不合理的值或越界等现象发生。 5-5:防止局部变量与公共变量同名。 5-6:严禁使用未经初始化的变量作为右值。
编程规范详解——函数、过程 处理。
1-11:在两个以上的关键字、变量、常量进行对等操作时,它们之间 的操作符之前、之后或者前后要加空格;进行非对等操作时,如果 是关系密切的立即操作符(如->),后不应加空格。
1-12: 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。
编程规范详解——注释
2-1:一般情况下,源程序有效注释量必须在20%以上。 2-2:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg
编程规范详解——注释
2-9:对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在 声明时都必须加以注释,说明其物理含义。变量、常量、宏的注释应放在 其上方相邻位置或右方。
2-10:数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自 注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置,不可 放在下面;对结构中的每个域的注释放在此域的右方。
后进入下一个case处理,必须在该case语句处理完、下一个case语句前加 上明确的注释。
编程规范详解——标识符的命名
3-1:标识符的命名要清晰、明了,有明确含义,同时使用完 整的单词或大家基本可以理解的缩写,避免使人产生误解。
3-2:命名中若使用特殊约定或缩写,则要有注释说明 3-3:自己特有的命名风格,要自始至终保持一致,不可来回
延用华为标准
C/C++编程规范

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

华为技术有限公司C语言编程规范
confidentialityleveldkba2826201150规范制订说明01前言为提高产品代码质量指导广大软件开发人员编写出简洁可维护可靠可测试高效可移植的代码编程规范修订工作组分析总结了我司的各种典型编码问题并参考了业界编程规范近年来的成果重新对我司1999年版编程规范进行了梳理优化刷新编写了本规范
DKBA
华为技术有限公司内部术规范
DKBA 2826-2011.5
C语言编程规范
2011年5月9日发布
2011年5月9日实施
华为技术有限公司 Huawei Technologies Co., Ltd.
版权所有 侵权必究 All rights reserved
密级:内部公开DKBA 2826-2011.5
修订声明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

华为CC语言编程规范

华为CC语言编程规范

百度文库- 让每个人平等地提升自我目录1 排版 (2)4 可读性 (11)6 函数、过程 (13)7 可测性 (14)1 排版¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个。

说明:对于由开发工具自动生成的代码可以有不一致。

¹1-2:相对独立的程序块之间、变量说明之后必须加空行。

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

if (!valid_ni(ni)){... epssn_index;repssn_ni = ssn_data[index].ni;应如下书写if (!valid_ni(ni)){... epssn_index;repssn_ni = ssn_data[index].ni;¹1-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。

示例:= 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:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

华为编程规范全PDF

华为编程规范全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 概述 (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. 变量和函数名应采用有意义的名称,尽量避免使用缩写或简写。

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. 添加性能测试用例,确保代码在大数据量和高并发情况下的性能表现。

C++编程规范-华为-Word文档-已整理过-07-my04

C++编程规范-华为-Word文档-已整理过-07-my04

1.1 C++编程规范总则 (5)1.1.1 资料来源 (5)1.1.2 C++编程规范总则 (6)1. 原则:编程时必须坚持的指导思想。

(6)2. 规则:编程时强制必须遵守的约定。

(6)3. 建议:编程时必须加以考虑的约定。

(6)4. 说明:对此原则/规则/建议进行必要的解释。

(6)5. 示例:对此原则/规则/建议从好、不好两个方面给出例子。

(6)6. 延伸阅读材料:建议进一步阅读的参考材料。

(6)1.2 C++ 编程规范1 常量 (6)1.2.1 资料来源 (6)1.2.2 C++ 编程规范1 常量 (6)1. 规则1.1 使用const常量取代宏 (6)2. 规则1.2 一组相关的整型常量应定义为枚举 (6)3. 规则1.3 不相关的常量,即使取值一样,也必须分别定义 (7)4. 建议1.1 尽可能使用const (8)1.3 C++编程规范2 初始化和类型转换 (8)1.3.1 2.1 声明、定义与初始化 (8)1. 规则2.1 禁止用memcpy、memset初始化非POD对象 (8)2. 建议2.1 变量使用时才声明并初始化 (8)3. 建议2.2 避免构造函数做复杂的初始化,可以使用“init”函数 (9)4. 建议2.3 初始化列表要严格按照成员声明顺序来初始化它们 (9)5. 建议2.4 明确有外部依赖关系的全局与静态对象的初始化顺序 (10)1.3.2 2.2 类型转换 (10)1. 规则2.2 使用C++风格的类型转换,不要使用C风格的类型转换 (10)2. 建议2.5 避免使用reinterpret_cast (11)3. 建议2.6 避免使用const_cast (11)4. 建议2.7 使用虚函数替换dynamic_cast (11)1.4 C++编程规范3 函数 (11)1.4.1 3.1 内联函数 (11)1. 规则3.1 内联函数(inline function)小于10行 (12)2. 规则3.2 使用内联函数代替函数宏 (12)3. 建议3.1 内联函数应该放在头文件中声明,而且在函数前添加inline关键字 (12)4. 建议3.2 内联函数的实现放在独立的文件 (12)1.4.2 3.2 函数参数 (13)1. 建议3.3 入参尽量用const引用取代指针 (13)2. 建议3.4 消除未使用函数参数 (13)3. 建议3.5 尽量少用缺省参数 (13)1.4.3 3.3 函数指针 (13)1. 建议3.6 尽量少用函数指针 (13)1.5 C++编程规范4 类 (13)1.5.1 4.1 类的设计 (13)1. 原则4.1 类职责单一 (14)2. 原则4.2 隐藏信息 (14)3. 原则4.3 尽量使类的接口正交、少而完备 (14)4. 规则4.1 模块间对外接口类不要暴露私有和保护成员 (14)5. 规则4.2 避免成员函数返回成员可写的引用或者指针 (15)6. 规则4.3 禁止类之间循环依赖 (15)7. 建议4.1 将数据成员设为私有的(struct除外),并提供相关存取函数 (16)8.建议4.2 使用PIMPL模式,确保私有成员真正不可见 (16)1.5.2 4.2 构造、赋值和析构 (16)1.规则4.4 包含成员变量的类,须定义构造函数或者默认构造函数 (16)2. 规则4.5 为避免隐式转换,将单参数构造函数声明为explicit (17)3. 规则4.6 包含资源管理的类应自定义拷贝构造函数、赋值操作符和析构函数 (17)4. 规则4.7 让operator=返回*this的引用 (18)5. 规则4.8 在operator=中检查给自己赋值的情况 (18)6. 规则4.9 在拷贝构造函数、赋值操作符中对所有数据成员赋值 (19)7. 规则4.10 通过基类指针来执行删除操作时,基类的析构函数设为公有且虚拟的 (19)8. 规则4.11 避免在构造函数和析构函数中调用虚函数 (20)9. 建议4.3 拷贝构造函数和赋值操作符的参数定义成const引用类型 (20)10. 建议4.4 在析构函数中集中释放资源 (20)1.5.3 4.3 继承 (20)1. 原则4.4 用组合代替继承 (21)2. 原则4.5 避免使用多重继承 (21)3. 规则4.12 使用public继承而不是protected/private继承 (21)4. 规则4.13 继承层次不超过4层 (21)5. 规则4.14 虚函数绝不使用缺省参数值 (22)6. 规则4.15 绝不重新定义继承而来的非虚函数 (22)7. 建议4.5 避免派生类中定义与基类同名但参数类型不同的函数 (23)8. 建议4.6 派生类重定义的虚函数也要声明virtual关键字 (23)1.5.4 4.4 重载 (23)1. 原则4.6 尽量不重载操作符,保持重载操作符的自然语义 (23)2. 规则4.16 仅在输入参数类型不同、功能相同时重载函数 (24)3. 建议4.7 使用重载以避免隐式类型转换 (24)4. 建议4.8 C/C++混用时,避免重载接口函数 (24)1.6 C++编程规范5 作用域、模板和C++其他特性 (24)1.6.1 5.1 作用域 (25)1. 原则5.1 使用名字空间进行归类,避免符号冲突 (25)2. 规则5.1 不要在头文件中或者#include之前使用using指示符 (25)3. 建议5.1 尽量少使用嵌套类(成员类) (26)4. 建议5.2 尽可能不使用局部类 (26)5. 建议5.3 使用静态成员函数或名字空间内的非成员函数,避免使用全局函数 (26)6. 建议5.4 避免class类型的全局变量,尽量用单件模式 (26)1.6.2 5.2 模板 (26)1. 建议5.5 谨慎使用模板,只使用模板的基础特性 (27)2. 建议5.6 注意使用模板的代码膨胀 (27)3. 建议5.7 模板类型应该使用引用或指针 (27)4. 建议5.8 模板如果有约束条件,请在模板定义处显式说明 (27)5. 建议5.9 两个模块之间接口中尽量不要暴露模板 (27)1.6.3 5.3 其他 (27)1. 规则5.2 不要在extern "C"内部使用#include包含其他头文件 (27)2. 建议5.10 避免使用友元 (27)3. 建议5.11 避免使用RTTI (27)4. 建议5.12 使用sizeof(变量)而不是sizeof(类型) (27)1.7 C++ 6 资源分配和释放 (28)1.7.1 资料来源: (28)1.7.2 C++ 6 资源分配和释放 (28)1. 原则6.1 明确产品动态内存的申请与释放原则 (28)2. 规则6.1 明确operator new的行为和检查策略 (28)3. 规则6.2 释放内存后,要立即将指针设置为NULL,防止产生野指针 (29)4. 规则6.3 new单个对象删除使用delete,new[n]数组对象删除使用delete [] (29)5. 规则6.4 释放结构(类)指针时,必须从底层向上层顺序删除 (29)6. 规则6.5 释放指针数组时,首先释放数组每个元素指针所指向的内存 (30)7. 规则6.6 不要返回局部对象指针 (31)8. 规则6.7 不要强制关闭线程 (31)9. 建议6.1 使用new, delete的封装方式来分配与释放内存 (31)10. 建议6.2 避免在不同的模块中分配和释放内存 (32)11.建议6.3 使用RAII 特性来帮助追踪动态分配 (32)1.8 C++ 编程规范7 异常与错误处理 (33)1.8.1 7.1 异常 (33)1. 原则7.1 减少不必要的异常 (34)2. 规则7.1 构造和析构函数不能抛出异常 (34)3. 规则7.2 通过传值的方式抛出,通过引用的方式捕获 (34)4. 规则7.3 确保抛出的异常一定能被捕捉到 (34)5. 规则7.4 确保异常发生后资源不泄漏 (34)6. 规则7.5 独立编译模块或子系统的外部接口禁止抛异常 (35)1.8.2 7.2 错误处理策略 (35)1. 原则7.2 建立合理的错误处理策略 (35)2. 原则7.3 离错误最近的地方处理错误或转换错误 (35)3. 规则7.6 错误发生时,至少确保符合基本保证;对于事务处理,至少符合强保证;对于原子操作,符合无错误保证 (35)1.9 C++编程规范8 标准库 (36)1.9.1 资料来源 (36)1.9.2 C++编程规范8 标准库 (36)1. 规则8.1 避免使用auto_ptr (36)2. 规则8.2 仅将scoped_ptr、shared_ptr和unique_ptr用于管理单个对象 (37)3. 规则8.3 如果涉及循环引用,使用weak_ptr解开循环 (37)4. 规则8.4 使用make_shared代替new生成shared_ptr (39)5. 规则8.5 对于同一个对象一旦使用shared_ptr,后续就要处处使用shared_ptr (40)6. 规则8.6 对于返回自身的shared_ptr指针的对象,要从enable_shared_from_this类派生407. 规则8.7 不要将使用不同版本stl、boost等模板库编译的模块连接在一起 (40)8. 规则8.8 不要保存string::c_str()指针 (41)9. 建议8.1 不要将stl、boost等模板库中的数据类型传递到动态链接库或者其它进程中 (41)10. 建议8.2 使用容器时要评估大量插入删除是否会生成大量内存碎片 (41)11. 建议8.3 使用string代替char* (41)12. 建议8.4 使用stl、boost等知名模板库提供的容器,而不要自己实现容器 (41)13. 建议8.5 使用新的标准库头文件 (41)1.10 C++编程规范9 程序效率 (41)1.10.1 9.1 C++语言特性的性能分级 (42)1.10.2 9.2 C++语言的性能优化指导 (42)1. 原则9.1 先测量再优化,避免不成熟的优化 (42)2. 原则9.2 选用合适的算法和数据结构 (42)3. 建议9.1 在构造函数中用初始化(定义时赋值)代替定义后赋值 (43)4. 建议9.2 当心空的构造函数或析构函数的开销 (43)5. 建议9.3 对象参数尽量传递引用(优先)或指针而不是传值 (43)6. 建议9.4 尽量减少临时对象 (44)7. 建议9.5 优先采用前置自增/自减 (44)8. 建议9.6 简单访问方法尽量采用内联函数 (44)9. 建议9.7 要审视标准库的性能规格 (44)10. 建议9.8 用对象池重载动态内存管理器 (45)11. 建议9.9 注意大尺寸数组的初始化效率 (45)12. 建议9.10 避免在函数内部的小块内存分配 (45)1.11 C++编程规范10并发 (45)1.11.1 资料来源 (45)1.11.2 C++编程规范10并发 (45)1. 规则10.1 多线程、多进程并行访问共享资源时,一定要加锁保护 (45)2. 规则10.2 锁的职责单一 (46)3. 规则10.3 锁范围尽量小,只锁对应资源操作代码 (46)4. 规则10.4 避免嵌套加锁;如果必须加锁,务必保证不同地方的加锁顺序是一样的 (46)5. 建议10.1进程间通讯,使用自己保证互斥的数据库系统、共享内存,或socket消息机制;尽量避免使用文件等进程无法管理的资源 (46)6. 建议10.2 可重入函数尽量只使用局部变量和函数参数,少用全局变量、静态变量 (47)7. 建议10.3 锁中避免调用函数;如果必须调用函数,务必保证不会造成死锁 (47)8. 建议10.4 锁中避免使用跳转语句 (48)1.12 C++编程规范11风格 (48)1.12.1 11.1 标示符命名与定义 (48)1. 建议11.1 类命名以大写字母开头,中间单词也以大写开头 (48)1.12.2 11.2 排版 (48)1. 建议11.2 类的声明按照一定的次序进行,关键字不缩进 (48)2. 建议11.3 构造函数初始化列表在同一行或按4格缩进并排几行 (48)1.12.3 11.3 注释 (49)1. 建议11.4 使用‘//’注释方式,而不是‘/* */’ (49)2. 建议11.5 为重要的类或结构体作注释,注释格式支持工具自动生成 (49)3. 建议11.6 为所有重要的成员函数作注释 (49)4. 建议11.7 正式发布的代码不能使用TODO 注释 (49)1.12.4 11.4 文件组织 (49)1. 建议11.8 整个项目需要的公共头文件应放在一个单独的目录下 (49)2. 建议11.9 一个模块的目录层次不宜太深,以1~2层为宜,接口文件放在最外层 (49)3. 建议11.10 保持文件前言的简洁性 (49)1.13 12可移植性(兼容性) (49)1.13.1 资料来源: (49)1.13.2 12可移植性(兼容性) (49)1.移植中一些关键问题如下: (50)2. 建议12.1 不直接使用C++的基本数据类型,不要假定其存储尺寸长度 (50)3. 建议12.2 避免指针截断 (50)4. 建议12.3 注意数据类型对齐问题 (50)5. 建议12.4 在涉及网络字节序处理时,要注意进行网络字节序与本地字节序的转换 (50)6. 建议12.5 避免无符号数与有符号数的转换 (51)7. 建议12.6 创建64 位常量时使用LL 或ULL 作为后缀 (51)8. 建议12.7 区分sizeof(void *)和sizeof(int) (51)9. 建议12.8 编译器、操作系统相关的代码独立出来 (51)1.14 13全球化 (52)1.14.1 13.1 多语言输入输出 (52)1. 原则13.1 使用正确的数据类型和类处理多语言字符和字符串 (52)2. 原则13.2 对字符进行处理时,需分配足够的内存空间并确保字符完整 (52)3. 规则13.1 使用标准库函数判断字符属性,使应用能够支持多区域 (52)4. 规则13.2 对字符串进行本地化排序、比较和查找时,使用有区域参数的locale::collate<>函数 (52)5. 建议13.1 处理Unicode数据时,注意检测BOM是否存在,避免产生多余字符或解码错误 (53)1.14.2 13.2 单一版本 (53)1. 规则13.3 资源与程序逻辑代码分离 (53)2. 规则13.4 保持资源的语义完整性,不要拼接字符串资源 (53)3. 建议13.2 资源的键名中包含该资源的应用场景信息 (54)1.14.3 13.3 时区夏令时 (54)1. 规则13.5 确保本地时间中时区夏令时信息完整 (54)2. 规则13.6 避免使用本地时间直接进行时间计算 (54)1.15 14业界编程规范和书籍 (55)1.15.1 14.1 业界编程规范 (55)1. 14.1.1 《google C++ code style》(google C++编程指南) (55)2. 14.1.2 《C++编程规范101条规则、准则与最佳实践》 (55)3. 14.1.3 Microsoft All-In-One Code Framework 《微软一站式示例代码库》 (55)1.15.2 14.2 扩展学习材料 (56)1. 14.2.1 C++ primer (56)2. 14.2.2 effective C++ / more effective C++ (56)3. 14.2.3 Effective STL (56)4. 14.2.4 inside the C++ object model (56)1.1 C++编程规范总则1.1.1 资料来源/xiyoulele/article/details/7987123分类:编码规范C/C++ 2012-09-17 12:49 101人阅读评论(0) 收藏举报编程c++C++编程规范专辑:/xiyoulele/article/category/12139831.1.2 C++编程规范总则1. 原则:编程时必须坚持的指导思想。

编码规范(华为)

编码规范(华为)

软件编程规范总则
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 }

华为c语言编程规范

华为c语言编程规范

华为c语言编程规范华为C语言编程规范1. 命名规范:- 变量、函数、宏名使用小写字母和下划线的组合,如:int my_variable;- 宏名全部大写,并用下划线分隔单词,如:#defineMAX_NUM 100;- 结构体命名使用大驼峰命名法,如:typedef struct MyStruct; - 文件名使用小写字母和下划线的组合,如:my_file.c;2. 缩进与换行:- 使用4个空格进行缩进,不使用Tab键;- 换行时,尽量将操作符放在新行开头,如:a = b +c;- if、for、while等关键字后的括号与关键字之间不换行;- 如果一行超过80个字符,应该进行换行;3. 注释规范:- 使用//进行单行注释;- 使用/**/进行多行注释;- 对代码的重点或逻辑进行注释,并保持注释和代码同步更新;- 不使用无意义的注释;4. 函数与变量规范:- 函数应该具有明确的功能,并使用动词开头;- 变量必须在使用前进行声明,并尽量减少全局变量的使用; - 变量名应该具有描述性,并易于理解;- 不要使用具有歧义或过于简单的变量名;- 变量应该在定义的同时初始化;5. 语法与逻辑规范:- 不要在一个语句中定义多个变量;- 避免使用goto语句;- 比较变量和常量时,应该将变量放在前面,如:if (x == 0); - 不要使用宏定义来替换函数,除非替换后代码不被执行;- 返回值应该使用明确的类型,避免使用int类型表示布尔值; - 使用语言提供的错误处理机制,不要使用全局变量进行错误处理;6. 引入外部文件规范:- 头文件的引用应该尽可能放在源文件的开头;- 头文件的引用应该使用""而不是<>,以示区分;- 头文件的引用应该避免循环引用;- 不要在头文件中定义变量;以上是华为C语言编程规范的部分内容,为了提高代码的可读性和可维护性,开发者应该严格遵守这些规范。

这些规范不仅适用于华为的开发项目,也适用于其他的C语言开发项目。

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

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

成研所:
陶永祥120482
李朝阳00117623
中软:
海思:
黄剑豪152126
孙学全00148680
网络:
IT:
张 伟118807
戴强51135
修订情 况
2012-03-19
华为机密,未经许可不得扩散 第2页,共57页
C++语言编程规范
内部公开
目录
0 说明 ...................................................... 5
0.1 前言 ...................................................................................................................................... 5 0.2 代码总体原则 ....................................................................................................................... 5 0.3 与C语言编程规范的关系 ...................................................................................................... 6 0.4 规范实施、解释....................................................................................................................6 0.5 术语定义...............................................................................................................................6

华为C语言规范

华为C语言规范
¹1-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if (!valid_ni(ni)) { ... // program code } repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni;
软件编程规范总则
&& (n7stat_stat_item_valid (stat_item)) && (act_task_table[taskno].result_data != 0));
1 排版
仅供内部使用 3
软件编程规范总则
1 排版
¹1-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低 优先级操作符处划分新行,操作符放在新行之首。
示例: (1) 逗号、分号只在后面加空格。 int a, b, c;
仅供内部使用 6
软件编程规范总则
1 排版
(2)比较操作符, 赋值操作符"="、 "+=",算术操作符"+"、"%",逻辑操作符"&&"、 "&",位域操作符"<<"、"^"等双目操作符的前后加空格。 if (current_time >= MAX_TIME_VALUE) a = b + c; a *= 2; a = b ^ 2;
应如下书写 if (!valid_ni(ni)) {
... // program code }
repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni;

(完整版)华为软件编程规范

(完整版)华为软件编程规范

文档编号产品版本受控状态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头文件的定义要有层次,禁止交叉引用。

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

软件编程规范(仅供内部使用)北京世纪百合科技有限公司Beijing Centurial Lily Technology Co.,Ltd.版权所有不得复制文档修改记录目录1.引言 (6)1.1 目的 (6)1.2 范围 (6)2.规范 (6)2.1 文件 (6)2.2版面风格 (4)2.3 标识符命名 (9)2.4 函数与宏 (11)2.5 代码的可靠性 (15)3.附录:通用类型的公共定义 (21)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/************************************************************Copyright (c) Lily Of The Century Technology 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 “stdlib.h”#include <isdn_config.h>应该改作:#include <stdlib.h>#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_ 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 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}示例5:如下例子不符合规范。

for (i = 0;i < 10;i++) {...; //program code}应如下书写:for (i = 0;i < 10;i++){...; //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程序块的分界符(大括号'{'和'}')应各独占一行并且位于同一列,同时与引用它们的语句左对齐。

相关文档
最新文档