華為軟體編程規範學習(一)–排版

來源:互聯網
上載者:User

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

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:不允許把多個短語句寫在一行中,即一行唯寫一條語句

樣本:如下例子不符合規範。

rect.length =0;  rect.width = 0;

應如下書寫

rect.length = 0;rect.width  = 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 (...) {   ... // program code}if (...)    {   ... // program code    }void example_fun(void )    {   ... // program code    }

應如下書寫。

for (...){   ... // program code}if (...){   ... // program code}void example_fun(void ){   ... // program code}

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

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

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

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

樣本:

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

int a, b, c; 

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

if (current_time >= MAX_TIME_VALUE)a = b + c;a *= 2;a = b ^ 2;

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

*p = 'a';        // 內容操作"*"與內容之間flag = !isEmpty; // 非操作"!"與內容之間p = &mem;        // 地址操作"&" 與內容之間i++;            // "++","--"與內容之間

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

p->id = pid;     // "->"指標前後不加空格

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

if (a >= b && c > d)

注意:一行程式以小於80字元為宜,不要寫得過長。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.