华为CC语言编程规范

合集下载

华为编程规范

华为编程规范
n7stat_str_compare((BYTE *) & stat_object, sizeof (_STAT_OBJECT)); n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER + index, stat_object ); (BYTE *) & (act_task_table[taskno].stat_object),
示例: (1) 逗号、分号只在后面加空格。 int a, b, c;
仅供内部使用
6
软件编程规范总则
1 排版
(2)比较操作符, 赋值操作符"="、 "+=",算术操作符"+"、"%",逻辑操作符"&&"、 "&",位域操作符"<<"、"^"等双目操作符的前后加空格。 if (current_time >= MAX_TIME_VALUE) a = b + c; a *= 2; a = b ^ 2; (3)"!"、"~"、"++"、"--"、"&"(地址运算符)等单目操作符前后不加空格。 *p = 'a'; p = &mem; i++; // 内容操作"*"与内容之间 // 地址操作"&" 与内容之间 // "++","--"与内容之间 flag = !isEmpty; // 非操作"!"与内容之间

华为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_函数名。

华为的编程规范和范例

华为的编程规范和范例

目录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 排版11-1:程序块要采用缩进风格编写,缩进的空格数为4个。

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

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

华为代码规范

华为代码规范

华为代码规范=====[ 排版 ]=====11-1:程序块要采用缩进风格编写,缩进的空格数为4个说明:对于由开发工具自动生成的代码可以有不一致。

11-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;11-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));11-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}11-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 );11-6:不允许把多个短语句写在一行中,即一行只写一条语句示例:如下例子不符合规范。

华为c 编码规范,认为比google的好一点

华为c  编码规范,认为比google的好一点

(转)华为c++编码规范,认为比google的好一点–【人人分享目录1、版面... 4 2、命名... 5 3、注释... 6 4、源代码结构... 11 附录A:常见单词缩写表 (12)1、版面【规则1-1】程序块要采用缩进风格编写,缩进的空格数为4个。

【规则1-2】对齐与缩进只使用空格键,不使用TAB键。

说明:以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐,不要使用会自动将8个空格变为一个TAB键的开发工具编辑代码。

(可开发工具软件自动将TAB键转换为4个空格)【规则1-3】函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。

【规则1-4】相对独立的程序块之间、变量说明之后必须加空行(一个空行即可)。

【规则1-5】一行程序以小于80字符为宜,不要写得过长。

【规则1-6】较长的语句(&gt;80字符)要尽量分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。

【规则1-7】循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

【规则1-8】若函数或过程中的参数较长,则要进行适当的划分。

【规则1-9】不允许把多个短语句写在一行中,即一行只写一条语句。

【规则1-10】if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。

【规则1-11】程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。

在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用缩进方式。

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

华为技术 公司C 语言编程规范
3 函数 ..................................................... 12
3.1 内联函数.............................................................................................................................12 3.2 函数参数.............................................................................................................................13 3.3 函数指针.............................................................................................................................14
0.1 前言 ...................................................................................................................................... 5 0.2 代码总体原则 ....................................................................................................................... 5 0.3 与C语言编程规范的关系 ...................................................................................................... 6 0.4 规范实施、解释....................................................................................................................6 0.5 术语定义...............................................................................................................................6

华为公司编程语法规范

华为公司编程语法规范

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

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

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

华为编程规范全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++)

华为公司编程技术规范

华为公司编程技术规范

if (...) { ... // program code }
仅供内部使用
5
软件编程规范总则
1 排版
void example_fun( void ) { ... // program code }
应如下书写。 for (...) { ... // program code }
if (...) { ... // program code }
应如下书写: if (pUserCR == NULL) { return; } ¹1-8:对齐只使用空格键, 对齐只使用空格键,不使用TAB键。 说明: 以免用不同的编辑器阅读程序时, 因 TAB 键所设置的空格数目不同而造成程序布局 不整齐,不要使用 BC 作为编辑器合版本,因为 BC 会自动将 8 个空格变为一个 TAB 键, 因此使用 BC 合入的版本大多会将缩进变乱。 ¹1-9:函数或过程的开始、 函数或过程的开始、结构的定义及循环、 结构的定义及循环、判断等语句中的代码都要采用缩进风格, 判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求。 语句下的情况处理语句也要遵从语句缩进要求。 ¹1-10:程序块的分界符( 程序块的分界符(如C/C++语言的大括号‘ 语言的大括号‘{’和‘}’)应各独占一行并且位于同一 列,同时与引用它们的语句左对齐。 同时与引用它们的语句左对齐。在函数体的开始、 在函数体的开始、类的定义、 类的定义、结构的定义、 结构的定义、枚举的定义以 及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。 语句中的程序都要采用如上的缩进方式。 示例:如下例子不符合规范。 for (...) { ... // 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语言开发项目。

华为编程规范(简化版)

华为编程规范(简化版)

华为机密,未经许可不得扩散Confidential Information of Huawei, No Spreading without Permission编程规范v0简化版Coding Standard v0编程规范研发内部公开Coding Standard For R&D internal use only目录前言软件编程规范总则....................................................................................... 错误!未定义书签。

第一章排版 (2)第二章注释 (3)第三章标识符命名 (5)第四章可读性 (6)第五章变量、结构 (6)第六章函数、过程 (7)第七章可测性....................................................................................................... 错误!未定义书签。

第八章程序效率................................................................................................... 错误!未定义书签。

第九章质量保证................................................................................................... 错误!未定义书签。

第十章代码编辑、编译、审查........................................................................... 错误!未定义书签。

第十一章代码测试、维护................................................................................... 错误!未定义书签。

华为技术有限公司C语言编程基础概要

华为技术有限公司C语言编程基础概要

return;
Huawei Confidential
HUAWEI TECHNOLOGIES CO., LTD.
我们要求什么?-续
struct XXX { char cA; short sB; long lC; }; void main() { char *pChar; pChar = (char *)malloc(7); /*0,魔鬼数字; 1,未申请成功怎么办?*/
Huawei Confidential


HUAWEI TECHNOLOGIES CO., LTD.
基础篇之字节对齐
typedef struct Head { CHAR src [6]; ULONG ulType; } HEAD_S;
VOID Encapsulation(CHAR* pBuf) { ULONG ulLen, ulDestIP; CHAR* pData = pBuf; ulLen = sizeof(HEAD_S); pData += ulLen; ulDestIP = VOS_NTOHL((IP_S *)pData->ulDestIP); return; }

对于无法定义成四字节对齐的数据结构,如以太网II、HDLC等,
则将它们强行定义成一字节对齐,以规避这个问题;

对于MIPS CPU,在必须面对非四字节对齐情况时,采用编译选
项方式加以解决;
HUAWEI TECHNOLOGIES CO., LTD. Huawei Confidential
目录
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 前言 sizeof 字节对齐 字节序 函数参数 返回值 强制类型转换 Switch case 字符串 溢出 资源释放 If规范 临界资源保护 简单既是美

华为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;

经典C编程规范完整篇

经典C编程规范完整篇

Input:
// 输入参数说明,包括每个参数的作
// 用、取值说明及参数间关系。
Output:
// 对输出参数的说明。
Return:
// 函数返回值的说明
Others:
// 其它说明
*************************************************/
C语言编程规范
2 注释
n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER + index, stat_object );
1-6:不允许把多个短语句写在一行中,即一行只写一条语句。
C语言编程规范
1 排版
1-7:if、for、do、while、case、switch、default等语句自占一行,且if、for、 do、while等语句的执行语句部分无论多少都要加括号{}。
File name:
// 文件名
Author:
Version:
Date: // 作者、版本及完成日期
Description: // 用于详细说明此程序文件完成的主要功能,与其他模块
// 或函数的接口,输出值、取值范围、含义及参数间的控
// 制、顺序、独立或依赖等关系
Others:
// 其它内容的说明
1 排版
1-5:若函数或过程中的参数较长,则要进行适当的划分。 示例: n7stat_str_compare((BYTE *) & stat_object,
(BYTE *) & (act_task_table[taskno].stat_object), sizeof (_STAT_OBJECT));
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

百度文库- 让每个人平等地提升自我目录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:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

示例:if ((taskno < max_act_task_number)&& (n7stat_stat_item_valid (stat_item))){... ord_length)&& (j < ; i++, j++){... . tat_object),sizeof (_STAT_OBJECT));n7stat_flash_act_duration( stat_item, frame_id*STAT_TASK_CHECK_NUMBER+ index, stat_object ); ¹1-6:不允许把多个短语句写在一行中,即一行只写一条语句。

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

= 0; = 0;应如下书写= 0;= 0;¹1-7:if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。

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

if (pUserCR == NULL) return;应如下书写:if (pUserCR == NULL){return;}¹1-8:对齐只使用空格键,不使用TAB键。

说明:以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐,不要使用BC作为编辑器合版本,因为BC会自动将8个空格变为一个TAB键,因此使用BC合入的版本大多会将缩进变乱。

¹1-9:函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。

¹1-10:程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。

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

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

for (...) {... .){... . .){... .){... . 前后不加空格。

¹p->id = pid; 文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。

示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。

/*************************************************Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.File name: ....History: Date:Author:Modification:2. ...*************************************************/¹2-3:源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。

示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。

/******************************************************* *****Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.FileName:Author: Version : Date:Description: -------History: epssn_index;repssn_ni = ssn_data[index].ni;例2:repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;/* get replicate sub system index and net indicator */应如下书写/* get replicate sub system index and net indicator */ repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;¹2-9:对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。

变量、常量、宏的注释应放在其上方相邻位置或右方。

示例:/* active statistic task number */#define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */¹2-10:数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。

对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。

示例:可按如下形式说明枚举/数据/联合结构。

/* sccp interface with sccp user primitive message name */ enum SCCP_USER_PRIMITIVE{N_UNITDATA_IND, /* sccp notify sccp user unit data come */N_NOTICE_IND, /* sccp notify user the network can not *//* transmission this message */N_UNITDATA_REQ, /* sccp user's unit data transmission request*/};¹2-11:全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。

示例:/* The ErrorCode when SCCP translate *//* Global Title failure, as follows */ .){...break;}else{ProcessCFW_B(); .½2-1:避免在一行代码或表达式的中间插入注释。

说明:除非必要,不应在代码或表达中间插入注释,否则容易使代码可理解性变差。

½2-2:通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的。

说明:清晰准确的函数、变量等的命名,可增加代码可读性,并减少不必要的注释。

½2-3:在代码的功能、意图层次上进行注释,提供有用、额外的信息。

说明:注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。

示例:如下注释意义不大。

/* if receive_flag is TRUE */if (receive_flag)而如下的注释则给出了额外有用的信息。

/* if mtp receive a message from links */if (receive_flag)½2-4:在程序块的结束行右方加注释标记,以表明某程序块的结束。

说明:当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读。

示例:参见如下例子。

if (...){¹ .)*/ .),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是允许的。

说明:变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。

示例:下面所示的局部变量名的定义方法可以借鉴。

int liv_Width其变量名解释如下:l 局部变量(Local)(其它:g 全局变量(Global)...)i 数据类型(Interger)v 变量(Variable)(其它:c 常量(Const)...)Width 变量含义这样可以防止局部变量与全局变量重名。

¹3-5:命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,比如采用UNIX的全小写加下划线的风格或大小写混排的方式,不要使用大小写与下划线混排的方式,用作特殊标识如标识成员变量或全局变量的m_和g_,其后加上大小写混排的方式是允许的。

相关文档
最新文档