整潔架構——那一條依賴規則 · 心智圖

整潔架構——那一條依賴規則. 可編輯嘅心智圖,以彩色分支、子題目同曲線連結呈現概念。 曲線表示關聯;只有方向重要時先用箭嘴。

整潔架構把代碼組織成一圈圈同心的分層——實體、使用案例、介面轉接器、框架——並由一條規則統管:依賴永遠指向內,所以核心從不依賴任何工具。

整潔架構——那一條依賴規則 · 心智圖

The interactive MindMap canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.

點樣閱讀呢張心智圖

  • 由中央主題開始,沿住彩色分支探索相關概念。
  • 曲線表示關聯;只有方向重要時先用箭嘴。

Business core

呢個分支匯集 “The innermost circle: objects and rules that exist no matter how the app is delivered — a customer, an invoice, the rule that an invoice cannot be paid twice.”, “The core never imports a framework”.

Use cases

呢個分支匯集 “Use cases orchestrate entities for one application scenario, such as “place an order”. They know about the app but nothing about screens or databases.”, “Because the database and UI are details, replacing them — a migration, a new front-end — leaves the entities and use cases untouched.”.

Adapters

呢個分支匯集 “Adapters translate between the use cases and the outside world: an HTTP controller turns a request into a use-case call, a presenter turns results into a screen.”, “Outer layers talk through the adapter, not to the core”.

Frameworks

呢個分支匯集 “The outermost ring: the tools. React, PostgreSQL, Express — details that can change without the core knowing or caring.”, “The dependency rule: source code dependencies always cross inward. The core declares what it needs (interfaces) and the outer rings implement them.”.

跨分支關聯

依賴永遠指向內——這一條規則就是這套架構本身。

核心宣告介面;外圈負責實作——轉接器就是那道接縫。

實體與使用案例在構造上就與框架無關。

回報就是可替換性:更換 UI、資料庫或網頁框架,都不必觸碰核心。

整潔架構講的是依賴方向,而不是分層的數目。

Key relationships and takeaways

  • 依賴永遠指向內——這一條規則就是這套架構本身。
  • 核心宣告介面;外圈負責實作——轉接器就是那道接縫。
  • 實體與使用案例在構造上就與框架無關。
  • 回報就是可替換性:更換 UI、資料庫或網頁框架,都不必觸碰核心。
  • 整潔架構講的是依賴方向,而不是分層的數目。

When to use this visual

  • 在團隊為一個大型代碼庫定下結構之前,先向他們講解依賴規則。
  • 覆核一套架構:一個匯入了 UI 或資料庫程式庫的使用案例就是違反規則,而這在畫布上看得見。
  • 規劃一次重寫或遷移——畫布顯示哪些分層必須留下來,哪些可以被替換。

運作方式

  1. 調整中央主題

    按項目或課堂修改中央主題名稱。

  2. 擴展分支

    編輯概念並加入例子或註解。

  3. 連結相關概念

    畫出跨分支連結;只有方向重要時先用箭嘴。

常見問題

甚麼是整潔架構?

這是一種由 Robert C. Martin 推廣開來的架構模式,它把代碼組織成一圈圈同心的分層:中心是實體,然後是使用案例,再來是介面轉接器,最外緣是框架與驅動。它的統管規則是代碼層面的依賴永遠指向內,因此核心的業務規則從不依賴交付機制——UI、資料庫或者網頁框架。

甚麼是依賴規則?

依賴規則說的是:代碼層面的依賴必須永遠向內跨越;一個外層可以依賴一個內層,反過來則絕不可以。在實務上,內層宣告介面,外層負責實作,所以核心的代碼不會從邊緣的工具匯入任何東西。圖解把它畫成一個獨立的群組,因為這套架構其餘每一項特性都由它推導出來。

整潔架構與分層架構有甚麼分別?

分層架構同樣把職責分開,但它的依賴通常是由上而下流動——展示層呼叫服務層,服務層再呼叫資料層。整潔架構把這個方向倒轉:業務核心坐在中心,其餘一切都依賴它,所以依賴的方向才是兩者的分別所在。圖解中那個指向核心的箭頭,就是把這個分別畫了出來。

小型專案值得用整潔架構嗎?

並非總是值得——當業務規則簡單,或者團隊只得一個人時,這套繁複做法的成本高於它的回報。當業務邏輯複雜到必須比工具活得更久,或者 UI 與資料庫很可能會改變時,這個模式就物有所值。畫布上那幾個講回報的方框把這場交換說得很誠實:核心的安全,是用那些轉接層買回來的。

喺 QueryChart 編輯呢張心智圖

喺可編輯畫布開啟心智圖。移動概念、加入分支同畫連結。

喺 QueryChart 編輯呢張心智圖

心智圖的更多內容