結對做業之代碼規範

前言:

通過老師評論作出修改,相比於以前簡略的代碼規範,此次花時間專門瞭解學習了一下其餘大公司/開發者的代碼規範,規範更完善了一些;html

代碼風格:

  • 庫的使用:

    儘可能不要引用沒必要要的庫,包括沒必要要的頭文件,或引用沒必要要的程序集。注重細節可以減小生成時間,最小化出錯概率,並給讀者一個良好的印象。程序員

  • 縮進:

    縮進使用4個空格的方式。算法

  • 全局變量:

    儘可能減小使用全局變量。爲了正確的使用全局變量,通常是將他們做爲參數傳入函數。不要在函數或類內部直接引用全局變量,由於這會引發一個反作用:在調用者不知情的狀況下改變了全局變量的狀態。這對於靜態變量一樣適用。若是須要修改全局變量,應該將其做爲一個輸出參數,或返回其一份全局變量的拷貝。編程

  • 變量的聲明和初始化:

    在最小的,包含該局部變量的做用域塊內聲明它。通常若語言容許,就僅在使用前聲明它們,不然就在做用域塊的頂端聲明,並必定在聲明變量的時候初始化它們,並儘可能在聲明和初始化或賦值置於同一行代碼內。windows

  • 括號:

    在複雜的條件表達式中,用括號清楚的表示邏輯優先級。ide

  • 斷行與空白的{ }行與分行:

    在定義不一樣變量或對多個變量進行賦值時不要放在一行上,即多條語句不要放在一行上。程序結構風格使用斷行和空白的{ }行,在程序調試時期須要單步執行須要斷行,在程序複雜代碼量大時空白{ }使結構清晰明瞭。每行代碼限定爲80字符寬,當一行裝不下內容時,須要進行折行。函數

折行規則:學習

1. 在分號處折行;
2.在操做符前折行。操做符包括+,-,*,/,左括號,逗號,」&&」,」||」,問號,冒號,例外的狀況是在逗號後折行;
3.當函數聲明、定義、調用或 enum 聲明中枚舉操做符的參數列表參數較多,不能置於一行,則將每個列表元素置於單獨的一行;
  • 註釋:

    註釋應看成爲源代碼的補充,而不是直譯源代碼。註釋中應避免重複程序標識符,避免複製別處有的信息(此時可以使用一個指向信息的指針)。不然程序中的任何一處改動均可能須要多處進行相應的變更。若是其餘地方沒有進行所需的註釋改動,將會致使誤註釋:這種結果比根本沒有註釋還要糟糕。
  1. 它們應當解釋不能直接從源代碼看出東西;它們不該複製語言的語法或語義。
  2. 它們應當幫助讀者掌握背景中的概念、依賴性、特別是複雜的數據代碼和算法。
  3. 它們應當突出:與代碼或設計標準的不一樣點、受限特性的使用、以及特殊的「技巧」。

i : 在每一函數定義代碼段前,應該有一段註釋,用於說明該函數的函數名,函數功能描述,輸入參數描述,輸出變量說明,算法描述。例:編碼

/*
*--------------------------------------------------------------------------------
*  Member Name              :   成員函數名
*  Function Description     :   功能描述
*  Parameter Specification  :   輸入參數描述  
*  Return Specification     :   返回變量說明 
*   Algorithm               :   算法描述        
*   Addtion                 :   附加說明,如調用說明,前置條件,後置條件。
*--------------------------------------------------------------------------------
*/

ii : 關鍵修改的地方應加註釋說明。idea

/*
* Revision                  :  修改版本
* Revision Date and Time    : 修改日期與時間
* Mender                    : 修改人
* Revision Description      : 修改內容簡要描述
*/
  • 命名規則:

  1. 對「匈牙利命名法」合理的簡化,變量名儘可能使得程序員一眼便能看出其含義,明顯易懂的變量類型能夠不須要在其中體現;
  2. 採起簡便縮寫格式,對於能夠簡寫表示的變量不須要過多描述;
  3. 避免沒必要要的修飾詞,若是刪減修飾詞程序不會變的難懂,那麼即可刪減;
  4. 使用下劃線分隔變量名中的做用域標註和變量的語義;好比Word_Count;
    • i : 全部的類型/類/函數名都用Pascal形式:所 有單詞的第一個字母都大寫;

    • ii : 全部變量使用Camel形式,第一個單詞所有小寫,隨後單詞隨Pascal形式;
    • iii : 常量全用大寫的字母,用下劃線分割單詞。
    • iv : 靜態變量加前綴s_(表示static)。
    • v : 若是不得已須要全局變量,則使全局變量加前綴g_(表示global)。

示例代碼:

class Node; // 類名

class LeafNode; // 類名

void Draw(void); // 函數名

void SetValue(int value); // 函數名
BOOL flag;

int drawMode;
const int MAX = 100;

const int MAX_LENGTH = 100;
void Init(…)

{

static int s_initValue; // 靜態變量

…

}
int g_howManyPeople; // 全局變量

int g_howMuchMoney; // 全局變量

參考文章:

C/C++編程規範

微軟編程規範

以及中央研究院C++ 編碼規範的word文檔

相關文章
相關標籤/搜索