《代碼大全》筆記 06 - 可以工作的類

豆瓣:https://book.douban.com/subject/1477390/

《Code Complete》2d ed,CC2

  • 軟件開發技術的發展,先是直接基於語句來思考編程問題,然後發展到基於子程序來思考,到現在是基於類來思考。

  • 類是由一組數據和子程序構成的集合,這些數據和子程序共同擁有一組內聚的、明確定義的職責。

抽象數據類型

  • 抽象數據類型(ADT,abstract data type)是指一些數據以及對這些數據所進行的操作的集合。
  • 可以隱藏實現細節。

  • 改動不會影響到整個程序。

  • 讓接口能提供更多信息。

  • 更容易提高性能。

  • 讓程序的正確性更顯而易見。

  • 程序更具自我說明性。

  • 無需在程序內到處傳遞數據。

  • 可以基於高層抽象操作實體,不用關注細節。

良好的類接口

  • 類的接口爲隱藏在其後的具體實現提供了一種抽象。
  • 如果類的接口不能展現出一種一致的抽象,那該類的內聚性就很弱。

  • 接口不應只基於語義表達而設計,應基於可編程設計,即編譯器能識別並強制實施接口的意圖。

良好的封裝

  • 儘可能限制類和成員的可訪問性。
  • 不要公開暴露成員數據。

  • 避免把私用的實現細節放入類的接口中。

  • 不要對類的使用者做出任何假設。

  • 避免使用友元類。

  • 警惕從語義上破壞封裝性。有時上帝視角是壞事。

有關設計和實現的問題

  • 包含(has a)纔是面向對象編程中的主力技術,而非繼承。
  • 類的數據成員數量最好不要超過 7 個。

  • 繼承適用於“是一個……”(is a)的關係。

  • 繼承遵循里氏替換原則。

  • 避免讓繼承體系過深。

創建類的原因

  • 爲現實世界中的對象建模。
  • 爲抽象的對象建模。

  • 降低複雜度。

  • 隔離複雜度。

  • 隱藏實現細節。

  • 限制變動的影響範圍。

  • 隱藏全局數據。

  • 讓參數傳遞更順暢。

  • 建立中心控制點。

  • 讓代碼易於重用。

2019-12-28 - 廖傑良

發佈了99 篇原創文章 · 獲贊 64 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章