• config parser
. JSON
. JsonCPp
- 政策
- 命名規則
- 不使用單一底線開頭的名稱
- macros只用類似 ONLY_UPPERCASE_NAME 這樣的名稱且不可用常用單字或縮寫(例如 template的 T)
- 可參考如下的命名習慣
- classes, functions, enums: LikeThis
- variables: likeThis
- private data member: m_likeThis
- marcos: LIKE_THIS
- 註釋
- 儘量以程式碼代替註釋(不要撰寫與程式碼重複地註釋, 容易不同步)
- 請寫說明性註釋, 解釋演算法原理與做法
- 編譯
- 設計風格
- 一次專注一件事, 每個 class或 function 應該都具有內聚力, 只完成單一任務
- 正確比快速好, 簡單比複雜好, 清晰比小巧玲瓏好, 安全比不安全好.
- Scalability
- 使用動態配置
- 了解個演算法複雜度
- 盡可能使用線性演算法
- Optimization
- 隱藏資訊
- 絕對不要把 class的 member data設為 public 或釋出指向成員變數的 pointer或 handle
- Coding Style
- pass by reference
- 用 ++a, --a取代 a++, a--
- 善用 design patterns or idioms
- 將 global 與 shared的資料最少化
- 絕對不要在單一述句中配置一個以上的資源
- void Fun(shared_ptr<Widget> sp1, shared_ptr<Widget> sp2);
- // ...
- Fun(shared_ptr<Widget>(new Widget), shared_ptr<Widget>(new Widget));
- 例如以上範例, 若 compiler編譯順序為 new, new 再 constructor 兩次, 則在其中一個 constructor exception時造成 memory leak. 應改為
- shared_ptr<Widget> sp1 (new Widget), sp2(new Widget);
- Fun(sp1, sp2);
- C++
- C++ primer
- Effective C++
- C++ Coding Standards
- Deep C
- Software Engineering
- 物件導向設計模式
- Test Driven
- Agile Software Development
- 編程規範
- 自動編譯系統
- Test System
- 版本控制系統 (version control)
- 錯誤回報系統 (bug tracker)
- static code analysis
- Resource repository