結對作業之代碼規范


前言:

經過老師評論做出修改,相比於之前簡略的代碼規范,這次花時間專門了解學習了一下其他大公司/開發者的代碼規范,規范更完善了一些;

代碼風格:

  • 庫的使用:

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

  • 縮進:

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

  • 全局變量:

盡量減少使用全局變量。為了正確的使用全局變量,一般是將他們作為參數傳入函數。不要在函數或類內部直接引用全局變量,因為這會引起一個副作用:在調用者不知情的情況下改變了全局變量的狀態。這對於靜態變量同樣適用。如果需要修改全局變量,應該將其作為一個輸出參數,或返回其一份全局變量的拷貝。

  • 變量的聲明和初始化:

在最小的,包含該局部變量的作用域塊內聲明它。一般若語言允許,就僅在使用前聲明它們,否則就在作用域塊的頂端聲明,並一定在聲明變量的時候初始化它們,並盡量在聲明和初始化或賦值置於同一行代碼內。

  • 括號:

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

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

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

折行規則:

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

注釋應當作為源代碼的補充,而不是直譯源代碼。注釋中應避免重復程序標識符,避免復制別處有的信息(此時可使用一個指向信息的指針)。否則程序中的任何一處改動都可能需要多處進行相應的變動。如果其他地方沒有進行所需的注釋改動,將會導致誤注釋:這種結果比根本沒有注釋還要糟糕。

  1. 它們應當解釋不能直接從源代碼看出東西;它們不應復制語言的語法或語義。
  2. 它們應當幫助讀者掌握背景中的概念、依賴性、特別是復雜的數據代碼和算法。
  3. 它們應當突出:與代碼或設計標准的不同點、受限特性的使用、以及特殊的“技巧”。

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

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

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

/*
* 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文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM