華爲軟件編程規範學習(一)--排版

轉自:http://blog.csdn.net/ce123/article/details/8885868

軟件編程規範學習(一)--排版

1-1:程序塊要採用縮進風格編寫,縮進的空格數爲4個

說明:對於由開發工具自動生成的代碼可以有不一致。

1-2:相對獨立的程序塊之間、變量說明之後必須加空行

示例:如下例子不符合規範。

[plain] view plaincopy
  1. int ni;  
  2. if (!valid_ni(ni))  
  3. {  
  4.     ... // program code  
  5. }  
  6. repssn_ind = ssn_data[index].repssn_index;  
  7. repssn_ni  = ssn_data[index].ni;  

應如下書寫

[plain] view plaincopy
  1. int ni;  
  2.    
  3. if (!valid_ni(ni))  
  4. {  
  5.     ... // program code  
  6. }  
  7. repssn_ind = ssn_data[index].repssn_index;  
  8. repssn_ni  = ssn_data[index].ni;  

1-3:較長的語句(>80字符)要分成多行書寫,長表達式要在低優先級操作符處劃分新行,操作符放在新行之首,劃分出的新行要進行適當的縮進,使排版整齊,語句可讀

示例:

[plain] view plaincopy
  1. perm_count_msg.head.len= NO7_TO_STAT_PERM_COUNT_LEN  
  2.                          + STAT_SIZE_PER_FRAM * sizeof( _UL );  
  3. act_task_table[frame_id* STAT_TASK_CHECK_NUMBER + index].occupied  
  4.              = stat_poi[index].occupied;  
  5. act_task_table[taskno].duration_true_or_false  
  6.              = SYS_get_sccp_statistic_state( stat_item );  
  7. report_or_not_flag =((taskno < MAX_ACT_TASK_NUMBER)  
  8.                      &&(n7stat_stat_item_valid (stat_item))  
  9.                      &&(act_task_table[taskno].result_data != 0));  

1-4:循環、判斷等語句中若有較長的表達式或語句,則要進行適應的劃分,長表達式要在低優先級操作符處劃分新行,操作符放在新行之首

示例:

[plain] view plaincopy
  1. if ((taskno <max_act_task_number)  
  2.     &&(n7stat_stat_item_valid (stat_item)))  
  3. {  
  4.    ... // program code  
  5. }  
  6. for (i = 0, j = 0; (i< BufferKeyword[word_index].word_length)  
  7.                    && (j < NewKeyword.word_length); i++,j++)  
  8. {  
  9.    ... // program code  
  10. }  
  11. for (i = 0, j =0;   
  12.     (i < first_word_length) && (j < second_word_length);   
  13.     i++, j++)  
  14. {  
  15.    ... // program code  
  16. }  

1-5:若函數或過程中的參數較長,則要進行適當的劃分

示例:

[plain] view plaincopy
  1. n7stat_str_compare((BYTE*) & stat_object,  
  2.                   (BYTE *) & (act_task_table[taskno].stat_object),  
  3.                   sizeof (_STAT_OBJECT));  
  4. n7stat_flash_act_duration(stat_item, frame_id *STAT_TASK_CHECK_NUMBER  
  5.                                      + index, stat_object );  

1-6:不允許把多個短語句寫在一行中,即一行只寫一條語句

示例:如下例子不符合規範。

[plain] view plaincopy
  1. rect.length =0;  rect.width = 0;  

應如下書寫

[plain] view plaincopy
  1. rect.length = 0;  
  2. rect.width  = 0;  

1-7:if、for、do、while、case、switch、default等語句自佔一行,且if、for、do、while等語句的執行語句部分無論多少都要加括號{}

示例:如下例子不符合規範。

[plain] view plaincopy
  1. if (pUserCR == NULL)return;  

應如下書寫:

[plain] view plaincopy
  1. if (pUserCR == NULL)  
  2. {  
  3.    return;  
  4. }  

1-8:對齊只使用空格鍵,不使用TAB鍵

說明:以免用不同的編輯器閱讀程序時,因TAB鍵所設置的空格數目不同而造成程序佈局不整齊,不要使用BC作爲編輯器合版本,因爲BC會自動將8個空格變爲一個TAB鍵,因此使用BC合入的版本大多會將縮進變亂。

1-9:函數或過程的開始、結構的定義及循環、判斷等語句中的代碼都要採用縮進風格,case語句下的情況處理語句也要遵從語句縮進要求

1-10:程序塊的分界符(如C/C++語言的大括號‘{’和‘}’)應各獨佔一行並且位於同一列,同時與引用它們的語句左對齊。在函數體的開始、類的定義、結構的定義、枚舉的定義以及if、for、do、while、switch、case語句中的程序都要採用如上的縮進方式

示例:如下例子不符合規範。

[plain] view plaincopy
  1. for (...) {  
  2.    ... // program code  
  3. }  
  4. if (...)  
  5.     {  
  6.    ... // program code  
  7.     }  
  8. void example_fun(void )  
  9.     {  
  10.    ... // program code  
  11.     }  

應如下書寫。

[plain] view plaincopy
  1. for (...)  
  2. {  
  3.    ... // program code  
  4. }  
  5. if (...)  
  6. {  
  7.    ... // program code  
  8. }  
  9. void example_fun(void )  
  10. {  
  11.    ... // program code  
  12. }  

1-11:在兩個以上的關鍵字、變量、常量進行對等操作時,它們之間的操作符之前、之後或者前後要加空格;進行非對等操作時,如果是關係密切的立即操作符(如->),後不應加空格。

說明:採用這種鬆散方式編寫代碼的目的是使代碼更加清晰

由於留空格所產生的清晰性是相對的,所以,在已經非常清晰的語句中沒有必要再留空格,如果語句已足夠清晰則括號內側(即左括號後面和右括號前面)不需要加空格,多重括號間不必加空格,因爲在C/C++語言中括號已經是最清晰的標誌了。

在長語句中,如果需要加的空格非常多,那麼應該保持整體清晰,而在局部不加空格。給操作符留空格時不要連續留兩個以上空格。

示例:

(1) 逗號、分號只在後面加空格。

[plain] view plaincopy
  1. int a, b, c;   

(2)比較操作符, 賦值操作符"="、 "+=",算術操作符"+"、"%",邏輯操作符"&&"、"&",位域操作符"<<"、"^"等雙目操作符的前後加空格。

[plain] view plaincopy
  1. if (current_time >= MAX_TIME_VALUE)  
  2. a = b + c;  
  3. a *= 2;  
  4. a = b ^ 2;  

(3)"!"、"~"、"++"、"--"、"&"(地址運算符)等單目操作符前後不加空格。

[plain] view plaincopy
  1. *p = 'a';        // 內容操作"*"與內容之間  
  2. flag = !isEmpty; // 非操作"!"與內容之間  
  3. p = &mem;        // 地址操作"&" 與內容之間  
  4. i++;            // "++","--"與內容之間  

(4)"->"、"."前後不加空格。

[plain] view plaincopy
  1. p->id = pid;     // "->"指針前後不加空格  

(5) if、for、while、switch等與後面的括號間應加空格,使if等關鍵字更爲突出、明顯。

[plain] view plaincopy
  1. if (a >= b && c > d)  

注意:一行程序以小於80字符爲宜,不要寫得過長。 

發佈了0 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章