整潔代碼之道 11 系統

整潔代碼的層次繼續上升,從類到系統,本章講解如何在較高的系統層級上保持代碼整潔

11.1 如何建造一個城市

  1. 系統和城市一樣,有些人負責全局,其他人負責細節,幾乎不可能一個人掌控所有

11.2 將系統的構造與使用分開

  1. 軟件系統應該將啓動過程和運行時邏輯進行分離

11.2.1 分解 main 方法

  1. 將構造與使用分開的方法之一就是 將全部的構造過程搬遷到 main 方法中

11.2.2 工廠

  1. 有時候應用程序也要負責確定什麼時候創建對象

11.2.3 依賴注入( Dependency Injection ,DI )

  1. 控制反轉( Inversion of Control ,IoC ) 時依賴注入的一種應用手段
  2. 控制反轉將對象的第二權責抽離出來,轉移到另一個屬於它的對象中,使兩個對象都遵循 單一權責原則

11.3 擴容

  1. 系統需要擴容是非常現實的需求,因爲一開始沒有人能把一切都設計的那麼超前
  2. 迭代和增量開發是每個系統都需要經歷的事
  3. 面向切面編程( aspect-oriented progamming ,AOP ) 是一種可以讓系統實現快速擴容的編程手段
  4. 在 AOP 中,被稱爲切面的模塊構造,指明瞭系統中哪些行爲會通過某種方式被修改,從而讓某些特定場景被支持

11.4 Java 代理

  1. JDK 提供的 動態代理 只能和藉口協同工作
  2. 龐大的代碼量和複雜的操作邏輯是動態代理的兩大弱點

11.5 純 Java AOP 框架

  1. SpringAOP 就是一個純 Java AOP 框架,它通過編寫 XML 內容來實現系統中各種 Bean 的依賴注入

11.6 AspectJ 的切面

  1. AspectJ 是通過切面來實現關注面切分的工具

11.7 測試驅動系統架構

  1. 最佳的系統架構由模塊化的關注面領域組成,每個關注面都使用統一對象實現

11.8 優化決策

  1. 模塊化和關注面切分成就了分散化的管理和決策
  2. 有時候決策不一定非要預先作出,延遲決策到最後一刻也不失爲一種好手段

11.9 明智使用添加了可論證價值的標準

  1. 創立標準的過程有時非常漫長

11.10 系統需要領域特定語言

  1. 領域特定語言( Doamin-Specific Lanuage ,DSL ) 是一種單獨的小型腳本語言,或通過標準語言編寫的 API 集合

11.11 小結

  1. 系統也應該是整潔的
  2. 侵害性架構會湮滅系統邏輯,衝擊整個系統的敏捷開發能力
  3. 無論是設計系統或單獨的模塊,都最好使用當前環境下可實現的最簡單方案
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章