Clean Code - System 系統
-
劃分系統的建造與使用
建造與使用相比是不同的過程,將所有關注的事情都分開來。
-
主函式Main的劃分
main函式建造系統所需的物件,然後將物件傳遞給應用程式,應用程式只需要專注在使用它們。
-
工廠
有些時後也要讓應用程式負起何時要產生物件的責任,可使用抽象工廠模式讓應用程式自行決定何時產生ListItems。
-
相依性注入
將建立過程從使用中分離出來有種強大的機制稱之為相依性注入(Dependency Injection, DI),
這是控制反轉(Inverson of Control, IoC)在相依性管理的一種手段。
控制反轉為某物件的第二職責,移至其他專注於該職責的物件裡,也因此支援了單一職責原則。
一個物件不應該負責實體化對本身的相依,反而應該將這個責任交給另外一個授權機制,因而將控制權反轉。
DI容器會實體化所需的物件(通常視需求決定),然後使用建構子參數或設定者方法來串起物件的相依關係。
-
擴大
如果我們持續保持適當的關注點分離,軟體系統的架構就能遞增地成長。
讓系統「一開始就做對」,是一個神話。反之,我們應只實現今天的故事(使用者所要求的功能),然後重構它,在進行系統的擴充,來實現新的故事。
-
橫切關注點
-
測試驅動的系統架構
一個最理想的系統架構,包含了模組化關注點領域,每個關注點都由普通的物件來實作,不同的領域之間,利用最小侵入性的剖面或類似剖面的工具將之整合。
-
最佳化決策
模組化、關注點分離,降低複雜度
-
總結
在所有的抽象層級中,意圖應該是清楚可辨視的。不管在設計系統或個別的模組時,千萬不要忘記使用最簡單就可能可以運作的方式。
參考:
https://devstarsj.github.io/study/2018/12/11/study.cleanCode.11/