华为编码规范(C,C++)

上传者: hchy1985 | 上传时间: 2024-08-12 10:41:56 | 文件大小: 264KB | 文件类型: PDF
### 华为编码规范(C,C++) #### 一、排版 1. **程序块缩进**:根据华为编码规范的要求,程序块应当采用缩进风格编写,且缩进时使用的空格数为4个。对于由开发工具自动生成的代码,允许存在不一致的情况。 - **说明**:此规定旨在提高代码的可读性和一致性,便于开发者理解代码逻辑。通过统一的缩进方式,使得嵌套层次清晰可见。 2. **空行插入**:相对独立的程序块之间以及变量声明之后必须插入空行。 - **示例**:不符合规范的代码如下所示: ```c if(!valid_ni(ni)) { // program code } repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni; ``` - **正确做法**:正确的书写格式应当是: ```c if(!valid_ni(ni)) { // program code } repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni; ``` 3. **长语句分段**:较长的语句(超过80字符)需分成多行书写,长表达式应在低优先级操作符处划分新行,并将操作符放在新行之首。 - **示例**:不符合规范的例子: ```c 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)); ``` - **正确做法**:正确的书写格式应当是: ```c 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)); ``` 4. **循环与判断语句分段**:在循环和判断语句中,如果表达式过长,则应适当分段,具体是在低优先级操作符处划分新行,并将操作符置于新行之首。 - **示例**:不符合规范的例子: ```c 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 } ``` - **正确做法**:正确的书写格式应当是: ```c 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 } ``` 5. **函数或过程中的参数分段**:若函数或过程中的参数较长,则需要适当分段。 - **示例**:不符合规范的例子: ```c 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); ``` - **正确做法**:正确的书写格式应当是: ```c 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); ``` 6. **单语句一行**:不允许将多个短语句写在同一行中,即一行只能写一条语句。 - **示例**:不符合规范的例子: ```c rect.length = 0; rect.width = 0; ``` - **正确做法**:正确的书写格式应当是: ```c rect.length = 0; rect.width = 0; ``` 7. **控制语句格式**:`if`、`for`、`do`、`while`、`case`、`switch`、`default`等语句应自占一行,并且`if`、`for`、`do`、`while`等语句的执行语句部分无论多少都应加上括号 `{}`。 - **示例**:不符合规范的例子: ```c if (pUserCR == NULL) return; ``` - **正确做法**:正确的书写格式应当是: ```c if (pUserCR == NULL) { return; } ``` #### 二、总结 华为编码规范对于C/C++语言提出了严格的排版要求,旨在提升代码的一致性和可读性。这些规则覆盖了从基本的缩进到复杂的循环和判断语句分段,有助于确保代码质量并降低后期维护的成本。遵循这些规范,不仅可以帮助开发者编写出易于理解和维护的代码,还能促进团队之间的协作,确保项目的一致性和稳定性。

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明