| 第一堂課
1. 標準作業程序
1.1 增加物件內聚力與減少物件間耦合
1.2 複雜程式的更新方法
1.3 使用工具、方法來輔助
1.4 單元測試
1.5 Mentor 與 Buddy review
第二堂課
2. 基本技巧
2.1 把假設放進 Assert
2.2 利用const保護
2.3 避免 (魔數, 無意義變數, 過長函式, 全域變數, 太深的內縮, …)
2.4 struct 的使用技巧
2.5 heading / namespace的注意事項
第三堂課
3. 型別安全
3.1 使用Array 在單一型別
3.2 型別轉換的 Do and don't
4. 異常處理
4.1 區分errors and non-errors
4.2 設計error-safe程式碼
4.3 如何使用巨集協助
5. 軟體中斷
5.1 軟體中斷的基礎樣式與設計技巧
第四堂課
6. C++物件的使用
6.1 避免繼承非 base 的 class
6.2 建構、解構的注意事項
6.3 使用inline 的時機與方式
6.4 善用靜態與動態物件
6.5 儘可能的隱藏資訊, 避免洩漏
6.6 明智的使用 Pimpl
6.7 明確的規範是否可以copying
6.8 善用 smart pointers 處理共用模組
第五堂課
7. C++模組和template
7.1 將一起工作的型別與函式儘量放在一起
7.2 .h 檔案應注意的技巧
7.3 避免exception 跨越模組
7.4 泛型應明確提供客製點
7.5 優先考慮 vector 再選擇適當容器
7.6 容器只可存放 values 和 smart pointers
7.7 儘量以演算法代替手寫循環
第六堂課
8. 程式最佳化-I
8.1 資料結構+演算法=好的程式設計
8.2 找到關鍵的地方(I/O,使用頻率,耗費時間,整體資源使用)
8.3 瞭解指令的運算速度 (struct bit/double/operators…)
第七堂課
8. 程式最佳化-II
8.4 branching
8.5 善用cache / register
8.6 使用組語加強 (flag/jump/load)
8.7 bit 與資料壓縮
8.8 別忘了正確性/boundary
|