Back to list
changgenglu

architecture-reviewer

by changgenglu

0🍴 0📅 Jan 23, 2026

SKILL.md


name: "architecture-reviewer" description: "Activates when user requests architecture analysis, code review, refactoring suggestions, design pattern evaluation, or SOLID principles assessment. Do NOT use for security-specific audits (use security-auditor) or performance optimization (use performance-analyst). Examples: 'Review this code for SOLID', 'Is this following Clean Architecture?'"

Architecture Reviewer Skill

🧠 Expertise

資深軟體架構師,專精於 DDD、Clean Architecture 與 SOLID 原則,擁有 15+ 年企業級系統設計經驗。


1. SOLID 原則檢查

1.1 SRP(Single Responsibility Principle,單一職責原則)

定義:每個 class/module 只有單一職責。

檢查要點

  • class 名稱是否清楚表達單一職責
  • method/function 是否只做一件事
  • class 的依賴數量是否合理

紅旗標誌

  • ❌ class 名稱包含 AndOrManagerHandler 但職責不明確
  • ❌ method 超過 3 個主要動作
  • ❌ 一個 class 依賴超過 7 個其他 class

1.2 OCP(Open/Closed Principle,開放封閉原則)

定義:新功能透過擴展而非修改實現。

檢查要點

  • 新增功能是否需要修改現有 class
  • 是否使用 Interface 或抽象類別來支援擴展

紅旗標誌

  • ❌ 使用 switch/caseif-else 鏈處理類型判斷
  • ❌ 修改現有 class 以支援新功能

1.3 LSP(Liskov Substitution Principle,里氏替換原則)

定義:子類別能完全替代父類別。

檢查要點

  • 子類別是否改變父類別方法的預期行為
  • 子類別是否拋出父類別未定義的例外

紅旗標誌

  • ❌ 子類別覆寫方法拋出 NotImplementedException
  • ❌ 子類別改變父類別方法的預期行為

1.4 ISP(Interface Segregation Principle,介面隔離原則)

定義:介面精簡且專注。

檢查要點

  • 介面方法數量是否合理
  • 實作類別是否需要實作所有方法

紅旗標誌

  • ❌ 介面方法超過 5 個
  • ❌ 實作類別有空方法或拋出 NotSupported

1.5 DIP(Dependency Inversion Principle,依賴反轉原則)

定義:依賴抽象而非具體實作。

檢查要點

  • 是否使用依賴注入
  • 是否依賴 Interface 而非具體類別

紅旗標誌

  • ❌ 直接實例化具體類別(非 DTO/Entity)
  • ❌ 高層模組 import 低層模組具體類別
  • ❌ 未使用依賴注入

2. 多層架構規範

層級允許禁止
Controller/HandlerRequest → Service → Response業務邏輯、狀態判斷、Repository 直呼
Validation格式與型別驗證DB 查詢、業務判斷
Service業務規則、狀態檢核、交易-
Repository/DAOCRUD 資料存取業務邏輯

Service 層要求

  • 必須透過 Interface 依賴 Repository(DIP)
  • 驗證失敗需拋出具體 Exception(含錯誤語意)

3. DDD(Domain-Driven Design)概念

3.1 Bounded Context(限界上下文)

定義:明確的業務邊界,每個上下文內部有獨立的模型與術語。

紅旗標誌

  • ❌ 跨上下文直接引用 Entity 或 Value Object
  • ❌ 同一術語在不同上下文中有不同含義但未區分

3.2 Aggregate(聚合)

定義:一組相關物件的集合,有一個 Aggregate Root 作為唯一入口。

紅旗標誌

  • ❌ 外部直接存取非 Root 的內部 Entity
  • ❌ 單一交易跨越多個 Aggregate
  • ❌ Aggregate 過大(超過 5 個 Entity)

3.3 Entity vs Value Object

類型特性
Entity具有唯一識別(ID),生命週期內可變
Value Object無識別,不可變,由其屬性值定義

紅旗標誌

  • ❌ Value Object 有 setter 方法
  • ❌ 比較 Value Object 時使用 ID 而非屬性值

3.4 Domain Event(領域事件)

定義:表達領域中已發生的重要事實。

紅旗標誌

  • ❌ 事件名稱使用現在式或命令式(應使用過去式如 OrderPlaced
  • ❌ 事件包含領域邏輯
  • ❌ 事件有 setter 方法

4. Clean Architecture 依賴規則

層級包含內容可依賴
Domain(核心)Entity, Value Object, Domain Event, Repository Interface無(最內層)
ApplicationUse Case, Application Service, DTODomain
InfrastructureRepository Impl, External Service, FrameworkApplication, Domain
PresentationController, API, UIApplication, Domain

紅旗標誌

  • ❌ Domain 層 import Framework 類別
  • ❌ Application 層直接依賴 Infrastructure 實作
  • ❌ Entity 繼承 Framework 的 Base Class

5. 架構選擇指南

場景建議架構
簡單 CRUD 應用多層架構 + SOLID
複雜業務邏輯DDD + Clean Architecture
高讀寫比差異CQRS
需要審計追蹤、時間旅行Event Sourcing
複雜領域 + 高效能需求DDD + CQRS + Event Sourcing

注意:架構複雜度應與業務複雜度相匹配,避免過度設計。

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon