谷歌C++編碼規範讀書筆記

谷歌C++編碼規範筆記

##前言## 今天快速翻看了谷歌C++編碼規範http://zh-google-styleguide.readthedocs.org/en/latest/google-cpp-styleguide/contents/,學到了一些東西。ide

對於這個規範,我不會100%接收,好比裏面的變量命名規範就跟工做項目的代碼衝突了,還有谷歌建議switch中的每一個塊要加上{}等等。 我在看文檔的過程當中,把學到的新東西記錄下來,有些之前就習覺得常的編碼習慣,我就再也不記錄,好比析構函數要用virtual關鍵字,用sizeof(varname)代替sizeof(type)等。這裏的摘抄,都是我認爲具備通用性的建議。函數

##正文##ui

  • 全部頭文件都應該使用 #define 防止頭文件被多重包含, 命名格式當是: PROJECT_PATH_FILE_H_
  • 能用前置聲明的地方儘可能不使用 #include.
  • 複雜的內聯函數的定義, 應放在後綴名爲 -inl.h 的頭文件中.
  • 使用標準的頭文件包含順序可加強可讀性, 避免隱藏依賴: C 庫, C++ 庫, 其餘庫的 .h, 本項目內的 .h.
  • 不要在 .h 文件中使用匿名名字空間.
  • 不要將嵌套類定義成公有, 除非它們是接口的一部分, 好比, 嵌套類含有某些方法的一組選項.
  • 禁止使用 class 類型的靜態或全局變量: 它們會致使很難發現的 bug 和不肯定的構造和析構函數調用順序.
  • 構造函數中只進行那些沒什麼意義的初始化, 可能的話, 使用 Init() 方法集中初始化有意義的 (non-trivial) 數據.
  • 類的每一個區段內的聲明一般按如下順序:
    1. typedefs 和枚舉
    2. 常量
    3. 構造函數
    4. 析構函數
    5. 成員函數, 含靜態成員函數
    6. 數據成員, 含靜態數據成員
  • 咱們不容許使用缺省函數參數.
  • 咱們禁止使用 RTTI.
  • 對於迭代器和其餘模板對象使用前綴形式 (++i) 的自增, 自減運算符.
  • 整數用 0, 實數用 0.0, 指針用 NULL, 字符 (串) 用 '\0'.
  • 關於函數的命名,永遠不要用省略字母的縮寫,好比不能將count縮寫成cnt。
  • 函數聲明處註釋描述函數功能; 定義處描述函數實現.
  • 向函數傳入 NULL, 布爾值或整數時, 要註釋說明含義, 或使用常量讓代碼望文知意.
  • 若是函數聲明成 const, 關鍵字 const 應與最後一個參數位於同一行.
  • 若是有些參數沒有用到, 在函數定義處將參數名註釋起來:
  • return 表達式中不要用圓括號包圍.
  • 預處理指令不要縮進, 從行首開始.
  • 輸入參數是值參或 const 引用, 輸出參數爲指針.好比 void Foo(const string &in, string *out);
相關文章
相關標籤/搜索