**:
c++程式設計規範(101條
規則、準則與最佳實踐)
c++程式設計規範(101條規則、準則與最佳實踐)
雖然是書本的目錄,但也是高度的概括和總結。
組織和策略問題
第0條:不要拘泥於小節(了解哪些東西不應該標準化)
第1 條:在高警告級別乾淨利落地進行編譯
第2 條:使用自動構建系統
第3 條:使用版本控制項器
第4 條:做**審查
設計風格
第5 條:乙個實體應該只有乙個緊湊的職責
第6 條:正確、簡單和清晰第一
第7 條:程式設計中應該知道何時和如何考慮可伸縮性
第8 條:不要進行不成熟的優化
第9 條:不要進行不成熟的劣化
第10條:儘量減少全域性和共享資料
第11條:隱藏資訊
第12條:懂得何時和如何進行併發性程式設計
第13條:確保資源為物件所擁有。使用顯式的raii和智慧型指標
程式設計風格
第14條:寧要編譯時和連線時錯誤,也不要執行時錯誤
第15條:積極使用const
第16條:避免使用巨集
第17條:避免使用「魔數」
第18條:盡可能區域性地宣告變數
第19條:總是初始化變數
第20條:避免函式過長,避免巢狀過深
第21條:避免跨編譯單元的初始化依賴
第22條:儘量減少定義性依賴。避免迴圈依賴
第23條:標頭檔案應該自給自足
第24條:總是編寫#include保護符,決不要編寫外部#include保護符
函式與操作符
第25條:正確地選擇通過值、(智慧型)指標或者引用傳遞引數
第26條:保持過載操作符的自然語義
第27條:優先使用算術操作符和賦值操作符的標準形式
第28條:優先使用++和—的標準形式。優先呼叫字首形式
第29條:考慮過載以避免隱含型別轉換
第30條:避免過載&&、||或,(逗號)(過載後失去短路求值和結合性)
第31條:不要編寫依賴於函式引數求求值順序的**
類的設計與繼承
第32條:弄清所要編寫的是哪種類
第33條:用小類代替巨類
第34條:用組合代替繼承
第35條:避免從並非要設計成基類的類中繼承
第36條:優先提供抽象介面
第37條:公用繼承即可替代性。繼承不是為了重用,而是為了被重用
第38條:實施安全的覆蓋
第39條:考慮將虛函式宣告為非公用的,將公用函式宣告為非虛擬的
第40條:要避免提供隱式轉換
第41條:將資料成員設為私有的,無行為的聚集(c語言形式的struct)除外
第42條:不要公開內部資料
第43條:明智地使用pimpl(詳情見上篇)
第44條:優先編寫非成員非友無函式
第45條:總是一起提供new和delete
第46條:如果提供類專門的new,應該提供所有標準形式
析構和構造
第47條:以同樣的順序定義和初始化成員變數
第48條:在建構函式中用初始化式代替賦值
第49條:避免在建構函式和析構函式中呼叫虛函式
第50條:將基類析構函式設為公用且虛擬的,或者保護且非虛擬的
第51條:析構函式、釋放和交換絕對不能失敗
第52條:一致地進行複製和銷毀
第53條:顯式地啟用或者禁止複製
第54條:避免切片。在基類中考慮用轉殖代替複製
第55條:使用賦值的標準形式
第56條:中要可行,就提供不會失敗的swap(而且要正確地提供)
名字空間與模組
第57條:將型別及其非成員函式介面置於同一名字空間中
第58條:應該將型別和函式分別置於不同的名字空間中,除非有意想讓它們一起工作
第59條:不要在標頭檔案中或者#include之前編寫名字空間using
第60條:要避免在不同的模組中分配和釋放記憶體
第62條:不要允許異常跨越模組邊界傳播
第63條:在模組的介面中使用具有良好可移植性的型別
模組與泛型
第64條:理智地結合靜態多型性和動態多型性
第65條:有意地進行顯式自定義
第66條:不要特化函式模板
第67條:不要無意地編寫不通用的**
錯誤處理與異常
第68條:廣泛地使用斷言記錄內部假設和不變式
第69條:建立合理的錯誤處理策略,並嚴格遵守
第70條:區別錯誤與非錯誤
第71條:設計和編寫錯誤安全**
第72條:優先使用異常報告錯誤
第73條:通過值丟擲,通過引用捕獲
第74條:正確地報告、處理和轉換錯誤
第75條:避免使用異常規範
stl:容器
第76條:預設時使用vector。否則,選擇其他合適的容器
第77條:用vector和string代替陣列
第78條:使用vector(和string::c_str)與非c++api交換資料
第79條:在容器中只儲存值和智慧型指標
第80條:用push_back代替其他擴充套件序列的方法
第81條:多用範圍操作,少用單元素操作
第82條:使用公認的慣用法真正地壓縮容量,真正地刪除元素
stl:演算法
第83條:使用帶檢查的stl實現
第84條:用演算法呼叫代替手工編寫的迴圈
第85條:使用正確的stl查詢演算法
第86條:使用正確的stl排序演算法
第87條:使謂詞成為純函式
第88條:演算法和比較器的引數應多用函式物件少用函式
第89條:正確編寫函式物件
型別安全:
第90條:避免使用型別分支,多使用多型
第91條:依賴型別,而非其表示方式
第92條:避免使用reinterpret_cast
第93條:避免對指標使用static_cast
第94條:避免強制轉換const
第95條:不要使用c風格的強制轉換
第96條:不要對非pod進行memcpy操作或者mencmp操作
第97條:不要使用聯合重新解釋表示式
第98條:不要使用可變長引數(…)
第99條:不要使用失效物件(注意迭代器失效,特別是在插入元素後)。不要使用不安全函式
第100條:不要多型地處理陣列
C 程式設計規範101條
第1條 在高警告級別乾淨利落地進行編譯 第2條 使用自動構建系統 第3條 使用版本控制系統 第4條 做 審查 設計風格 程式設計風格 容器1 類 函式 列舉的名稱形如likethis,每個單詞首字母都大寫。2 變數的名字如likethis,第二個單詞首字母大寫 3 類中私有成員變數名形如liketh...
c 編碼規範101條
c 編碼規範101條 組織和策略問題 第0條 不要拘泥於小節 又名 了解哪些東西不應該標準化 第1條 在高警告級別乾淨利落地進行編譯 第2條 使用自動構建系統 第3條 使用版本控制系統 第4條 在 審查上投入 設計風格 第5條 乙個實體應該只有乙個緊湊的職責 第6條 正確 簡單和清晰第一 第7條 程...
C 再學習系列 虛函式的4條規則
對於常規的基類函式來說 1 盡量使用非虛擬介面模式 nvi 讓介面函式成為非虛擬的.2 盡量讓虛函式成為私用的.3 只有當派生類需要呼叫基類對某個虛函式的實現時,才把虛函式宣告為保護的.4 基類的析構函式應該要麼為共有虛函式 要麼為保護虛函式.說明 1,2 兩條將虛共有介面的兩個職責進行了很好的分解...