Google 編碼風格之命名規範(備忘)

NO IMAGE

參考連結:http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/naming/

通用規則:所有函式、變數、類與檔案命名儘量不要使用縮寫,以方便理解。除了不容易引起歧義的,如DNS等。

特殊規則:

1) 類的命名單詞首字母使用大寫且不能包含下劃線;

函式命名類似,但是採用駝峰寫法,首字母小寫,後續的單詞大寫,中間不能有下劃線,但如果您的某函式出錯時就要直接 crash, 那麼就在函式名加上 OrDie. 但對於取值和設值函式例外:

取值(Accessors)和設值(Mutators)函式要與存取的變數名匹配. 這兒摘錄一個類, num_entries_ 是該類的例項變數:

class MyClass {
    public:
        …
        int num_entries() const { return num_entries_; }
        void set_num_entries(int num_entries) { num_entries_ = num_entries; }

    private:
        int num_entries_;
};

2)所有變數命名都只能使用小寫,單詞與單詞之間使用下劃線間隔。類成員變數使用下劃線結尾,函式的區域性變數則不用下劃線結尾;對於全域性變數,在開頭加上”g_”,後續與前同;在Java當中,包package的命名需要使用小寫字母。

3) 常量使用全部大寫,而且單詞與單詞之間使用下劃線隔開;

4) 非靜態方法(例項方法)內呼叫另一個例項方法時,不需要畫蛇添足地加this。但在以下的情況,需要顯式寫出this:

1)當在一個構造器中需要呼叫另一個構造器時,必須用到this的時候,需要新增this。

2) 需要return this的時候,則會在例項方法中顯式地寫出this。

3)需要初始化類成員的時候,需要顯式寫出this。

5) 初始化陣列的時候,指定賦值陣列時,記得在最後一個元素後加一個逗號”,”,原因是為了維護長陣列。

如: 

int[] array_ = new int[]{1,
2,
3,};

6) finialize()方法中,應該總是假設基類版本的finialize()也在做某些重要的事情,所以要用super來呼叫基類的finialize()函式。但需要新增異常處理來新增這個句子。

protected void finalize(){
if(!check_out){
System.out.println("Error");
}
super.finalize(); // you should add exception statement
}

7) 定義基類/ 抽象基類/ 介面的時候,為將來繼承類/ 實現類/ 實現介面可能會丟擲的異常佔坑:

可以宣告方法將丟擲異常卻不丟擲的做法是允許的。這就涉及到一種良好的抽象基類/ 介面的編寫方法:

為將來的派生類/ 實現介面能丟擲這些已經在抽象基類/ 介面宣告的異常,就在抽象基類/ 介面宣告處加上異常丟擲宣告。

8/ 通常將一個類的資料成員設定為private,通過方法來引導客戶端程式設計師訪問資料成員。而且,基類和子類的資料成員的名字不宜相同。不然容易產生混淆。

9/ 我們一般規定:編寫構造器時,避免呼叫其它的方法。如果呼叫,也只能呼叫private和final的方法。