### 华为编程规范知识点详解
#### 一、排版规范
华为的编程规范非常重视代码的排版,这是为了确保代码的清晰性和可读性。以下是对文档中提到的一些关键排版规则的详细解释:
1. **程序块缩进**(¹1-1):
- 规则说明:程序块应当采用缩进风格编写,每一级缩进使用4个空格。
- 示例不符合规范:
```c
if(!valid_ni(ni)) {
//programcode
}
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
```
- 正确示范:
```c
if (!valid_ni(ni)) {
// programcode
}
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
```
2. **程序块之间的空行**(¹1-2):
- 规则说明:相对独立的程序块之间、变量声明之后必须加空行。
- 示例不符合规范:
```c
if(!valid_ni(ni)) {
//programcode
}
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
```
- 正确示范:
```c
if (!valid_ni(ni)) {
// programcode
}
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
```
3. **长语句的拆分**(¹1-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. **长表达式的拆分**(¹1-4):
- 规则说明:循环、判断等语句中若有较长的表达式,则需在低优先级操作符处进行适当的划分。
- 示例不符合规范:
```c
if ((taskno < max_act_task_number) && (n7stat_stat_item_valid(stat_item))) {
// programcode
}
for (i = 0, j = 0; (i < BufferKeyword[word_index].word_length) && (j < NewKeyword.word_length); i++, j++) {
// programcode
}
```
- 正确示范:
```c
if ((taskno < max_act_task_number)
&& (n7stat_stat_item_valid(stat_item))) {
// programcode
}
for (i = 0, j = 0;
(i < BufferKeyword[word_index].word_length)
&& (j < NewKeyword.word_length);
i++, j++) {
// programcode
}
```
5. **函数参数的拆分**(¹1-5):
- 规则说明:如果函数调用中的参数过长,则需要适当拆分。
- 示例不符合规范:
```c
n7stat_str_compare((BYTE*) &stat_object,
(BYTE*) &(act_task_table[taskno].stat_object),
sizeof(_STAT_OBJECT));
```
- 正确示范:
```c
n7stat_str_compare((BYTE*) &stat_object,
(BYTE*) &(act_task_table[taskno].stat_object),
sizeof(_STAT_OBJECT));
```
6. **单行语句**(¹1-6):
- 规则说明:每个语句都应单独占据一行。
- 示例不符合规范:
```c
rect.length = 0; rect.width = 0;
```
- 正确示范:
```c
rect.length = 0;
rect.width = 0;
```
7. **控制语句格式**(¹1-7):
- 规则说明:`if`、`for`、`do`、`while`、`case`、`switch`、`default`等语句自占一行,其后的执行语句无论长度如何都必须加括号 `{}`。
- 示例不符合规范:
```c
if (pUserCR == NULL) return;
```
- 正确示范:
```c
if (pUserCR == NULL) {
return;
}
```
8. **后续规范待续**(¹1-8):
- 规则说明:文档中未给出具体规范,但可以推测该部分继续讲解关于排版的其他规范。
以上是华为编程规范中关于排版方面的主要规定。这些规范旨在提高代码的可读性和可维护性,确保代码的一致性和标准化。遵循这些规范有助于减少错误的发生,提高团队协作效率。
2025-07-04 20:32:54
264KB
编程规范
1