1. 程式人生 > >《20171006-構建之法:現代軟件工程-閱讀筆記》

《20171006-構建之法:現代軟件工程-閱讀筆記》

bsp 機制 protected 使用 設計 需要 ++ 不能 風格

一、代碼規範

 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-構建之法:現代軟件工程-閱讀筆記》