《20171006-構建之法:現代軟件工程-閱讀筆記》
一、代碼規範
1、代碼風格規範
(1)縮進
(2)行寬
(3)括號
(4)斷行與空白的{ }行
(5)分行
(6)命名
(7)下劃線
(8)大小寫
(9)註釋
2、代碼設計規範
(1)函數
(2)goto
(3)錯誤處理
(4)如何處理C++中的類
1.類
實用類來封裝面向對象的概念和多態。
避免使用類型實體的值,應該用指針傳遞。
對於有顯式的構造和析構函數的類,不要建立全局的實體.因為你不知道它們在何時創建和消除。
僅在必要時.才使用“類”。
2.class vs.struct
如果只是數據的封裝,struct用即可。
3.公共/保護/私有成員
按照這樣的次序來說明類中的成員:public、protected、private。
4.數據成員
數據類型的成員用m_name說明。
不要使用公共的數據成員,要用inline訪問函數,這樣可兼顧封裝和效率。
5.虛函數
使用虛函數來實現多態。
僅在很有必要時,才使用虛函數。
如果一個類型要實現多態,在基類中的析構函數應該是虛函數。
6. 構造函數
不要在構造函數中做復雜的操作,簡單初始化所有數據成員即可。
構造函數不應該返回錯誤(事實上也無法返回)。把可能出錯的操作放到HrInit()或FInite()中。
7.析構函數
把所有的清理工作都放在析構函數中。如果有些資源在析構函數之前被釋放了,記住要重置這些成員為0或NULL。
析構函數也不應該出錯。
8.new 和 delete
如果可能,實現自己的new/delete ,這樣可以方便地加上自己的跟蹤和管理機制。自己的new/delete可以包裝系統提供的new/delete。
檢查new的返回值。new不一定都成功。
釋放指針時不用檢查NULL。
9.運算符
在理想狀態下,我們定義的類不需要自定義操作符。確有必要時,才會自定義操作符。
運算符不要做標準語義之外的任何動作。例如,“==”的判斷不能改變被比較實體的狀態。
運算符的實現必須非常有效率,如果有復雜的操作,應定義一個單獨的函數。
當你拿不定主意的時候,用成員函數,不要用運算符。
10.異常
異常是在“異乎尋常”的情況下出現的,它的設置和處理都要花費“異乎尋常”的開銷, 所以不要用異常作為邏輯控制來處理程序的主要流程。
了解異常及處理異常的花銷,在C語言中,這是不可忽視的開銷。
當使用異常時,要註意在什麽地方清理數據。
異常不能跨過DLL或進程的邊界來傳遞信息,所以異常不是萬能的。
11.類型繼承
僅在必要時,才使用類型繼承。
用const標註只讀的參數(參數指向的數據是只讀的,而不是參數本身 )
用const標註不改變數據的函數。
《20171006-構建之法:現代軟件工程-閱讀筆記》