| 決策點 | 選項範例 | 評估準則 |
|---|---|---|
| 架構風格 | 分層、微服務、模組化單體、CQRS、事件溯源 | 團隊規模、部署獨立性、資料一致性、演進速度 |
| 技術棧 | .NET 8 + EF Core + PostgreSQL + Redis + Kubernetes | 成熟度、生態系統、團隊熟悉度、長期支援 |
| 通訊協定 | REST/gRPC/GraphQL/訊息佇列 | 延遲、頻寬、合約演進、多語言支援 |
| 資料一致性 | 強一致 (ACID) / 最終一致 (BASE) / Saga | 業務容忍度、複雜度、可用性 |
| 安全性 | OAuth2/OIDC/JWT/mTLS/零信任 | 合規要求、威脅模型、身分識別提供者 |
| 原則 | 檢查項目 | 違反徵兆 |
|---|---|---|
| SRP | 類別只有一個變更理由 | 類別超過 200 行、方法超過 20 行、匯入超過 10 個命名空間 |
| OCP | 擴充不修改 (介面/策略/裝飾者) | 頻繁修改核心類別、大量 if/else 判斷型別 |
| LSP | 衍生類別可替換基類別 | 衍生類別拋出 NotImplementedException、行為語意偏離 |
| ISP | 介面精小、客戶不依賴不需方法 | 「胖介面」超過 5 方法、實作類別拋出例外 |
| DIP | 依賴抽象 (介面/抽象類別) | 直接 new 具體類別、靜態工具類別滿天飛 |
| 資訊隱藏 | 最小公開介面、封裝變化點 | public 欄位、過度 protected、內部邏輯外洩 |
// See ADR-003)。