天天看點

我的C/C++程式設計規範

# 編譯器

+ 能夠用最新的編譯器版本,就使用最新的編譯器版本

--> 最新的編譯器可以獲得更優的代碼生成品質和缺陷代碼檢查提醒

# 語言使用

## API接口設計

+  注重使用const修飾關鍵字和C++中的引用語言特性,做API接口參數傳遞設計

++  void f(const XParaPointer*) 

--> const展現接口參數在調用過程中不會被修改的限制

--> 如果在API接口參數設計中,統一使用const進行限定,那麼沒有攜帶const關鍵詞的指針參數,則可以被認為成“出參”,或指針控制權的轉移,指針參數可以被調用方儲存,以在将來使用

++  void ff([const] XPara&) 

--> 引用參數相比較與指針參數 void ff([const] XPara*),C++引用語言特性提供了更進一步的限定資訊:傳遞參數不可為空的限制

--> 對于在C語言程式設計中,普遍厭煩的入參參數為空檢查,在能夠使用C++的場景中可以使用引用來傳遞參數

--> 進一步結合const關鍵詞資訊,将可以提供不可為空 && 不能修改的接口說明

+++ 從深層次來講,圖靈機基礎操作為讀操作和寫操作,能夠區分這二者将是很好的實踐

| 使用     | 可讀  |可寫  | 不可寫   | 不可為空 |
| X*       | yes  | yes | no       | no       |
| const X* | yes  | no  | yes      | no       |
| &        | yes  | yes | no       | yes      |
| const X& | yes  | no  | yes      | yes      |
           

## 具體程式設計

++ 線程變量和延遲加鎖技術的使用,可以玩轉多線程間互相隔離且充分并行