Clean Code: System 系統

Clean Code - System 系統

  • 劃分系統的建造與使用

    建造與使用相比是不同的過程,將所有關注的事情都分開來。

  • 主函式Main的劃分

    main函式建造系統所需的物件,然後將物件傳遞給應用程式,應用程式只需要專注在使用它們。

    img

  • 工廠

    有些時後也要讓應用程式負起何時要產生物件的責任,可使用抽象工廠模式讓應用程式自行決定何時產生ListItems。

    img

  • 相依性注入

    將建立過程從使用中分離出來有種強大的機制稱之為相依性注入(Dependency Injection, DI)

    這是控制反轉(Inverson of Control, IoC)在相依性管理的一種手段。

    控制反轉為某物件的第二職責,移至其他專注於該職責的物件裡,也因此支援了單一職責原則。

    一個物件不應該負責實體化對本身的相依,反而應該將這個責任交給另外一個授權機制,因而將控制權反轉。

    DI容器會實體化所需的物件(通常視需求決定),然後使用建構子參數或設定者方法來串起物件的相依關係。

  • 擴大

    如果我們持續保持適當的關注點分離,軟體系統的架構就能遞增地成長。

    讓系統「一開始就做對」,是一個神話。反之,我們應只實現今天的故事(使用者所要求的功能),然後重構它,在進行系統的擴充,來實現新的故事。

  • 橫切關注點

  • 測試驅動的系統架構

    一個最理想的系統架構,包含了模組化關注點領域,每個關注點都由普通的物件來實作,不同的領域之間,利用最小侵入性的剖面或類似剖面的工具將之整合。

  • 最佳化決策

    模組化、關注點分離,降低複雜度

  • 總結

    在所有的抽象層級中,意圖應該是清楚可辨視的。不管在設計系統或個別的模組時,千萬不要忘記使用最簡單就可能可以運作的方式

     

參考:

https://devstarsj.github.io/study/2018/12/11/study.cleanCode.11/