Skip to content

Latest commit

 

History

History
214 lines (158 loc) · 5.55 KB

File metadata and controls

214 lines (158 loc) · 5.55 KB

Schema-Driven Development (Schema 驅動開發)

類型系統革命: 停止浪費 70% 時間在類型定義,專注業務邏輯

English | 中文文档 | 日本語

🎯 問題

編程的本質只有兩個: 資料類型 (50%) + 業務邏輯 (50%)

現實: 我們花費 70%+ 時間在類型定義,只有 30% 在實際業務邏輯。

為什麼? 因為我們在「代碼」中定義類型 (語言專屬,散落各處)。

解決方案: 在「數據」中定義類型 (JSON Schema - 語言無關,單一事實來源)。

💡 核心理念

Schema = Contract = Test = Doc = Object

一個 JSON Schema 文件同時充當:

  • API 契約: 前後端共識
  • 自動化測試: 修改 Schema = 修改所有測試
  • 類型定義: 自動生成 TypeScript/Rust/Python 類型
  • 文檔: 永遠正確的 API 文檔
  • 動態物件: JSON-as-Object 模式,天然的欄位對齊

🚀 快速範例

傳統方式 (2.5 小時)

TypeScript:

// 定義類型 (30 分鐘)
interface User {
  id: string;
  email: string;
  name: string;
}

// 寫驗證 (30 分鐘)
function validateUser(data: any): data is User {
  if (typeof data.id !== 'string') return false;
  if (typeof data.email !== 'string') return false;
  // ... 50 行驗證代碼
}

// 寫文檔 (20 分鐘)
// 寫測試 (40 分鐘)
// 同步後端 (20 分鐘)
// 業務邏輯 (30 分鐘)

Rust:

// 在 Rust 中重複所有定義 (1 小時)
struct User { /* ... */ }
fn validate_user() { /* ... */ }

Schema-DD 方式 (40 分鐘)

一個 Schema (10 分鐘):

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "User",
  "type": "object",
  "properties": {
    "id": {"type": "string"},
    "email": {"type": "string", "format": "email"},
    "name": {"type": "string", "minLength": 1}
  },
  "required": ["id", "email", "name"]
}

自動生成 (0 分鐘):

  • ✅ TypeScript 類型
  • ✅ Rust 驗證
  • ✅ Python Pydantic 模型
  • ✅ 文檔
  • ✅ Storybook stories
  • ✅ 測試用例

業務邏輯 (30 分鐘):

// 專注業務邏輯!
function createUser(data: User) {
  // 你真正創造價值的代碼在這
}

結果: 4-5 倍速度, 專注重要的事!

🌟 真實案例

案例 1: Claude TUI RS (流式事件處理)

挑戰: Terminal UI with 14 streaming event types

解決方案: JSON-as-Object Pattern + DynamicEvent API

成果:

  • 40 倍開發效率 (3 分鐘 vs 2 小時/事件)
  • 100% 文檔準確 (Schema 自動生成文檔)
  • 零類型錯誤 (Runtime 驗證 + 動態屬性存取)
  • 9 個測試通過 (Schema 即測試)

詳細內容 →

案例 2: UI 組件庫 ⭐ 殺手級應用

挑戰: 跨平台 UI 組件庫,50+ 組件,前後端完美對齊

解決方案: Schema Registry + Component Library Pattern

成果:

  • 4-6 倍開發效率 (30 分鐘 vs 2-3 小時/組件)
  • 88% 維護成本降低 (5 小時 vs 40 小時/月)
  • 100% 設計系統一致性 (強制執行,不可違規)
  • 跨平台完美對齊 (Web/Mobile/Backend 同一個 Schema)

核心特性:

  • 一個 Schema = Props + 驗證 + 文檔 + Storybook
  • 添加組件: 寫 10 行 JSON → 自動生成一切
  • 設計系統強制: $ref: colors.schema.json → 不可能違規
  • 前後端對齊: 同一個 Schema,所有平台通用

詳細內容 →

📚 文檔目錄

中文文檔

完整文檔結構 (英文)

詳見 English README

💡 類型系統革命

為什麼花 70% 時間在類型?

傳統編程:

時間分配:
  - 定義類型: 30-40%
  - 寫驗證邏輯: 20-30%
  - 同步類型 (前後端): 10-15%
  - 類型相關總計: 60-85%
  - 業務邏輯: 15-40% ← 真正的價值!

Schema-DD:

時間分配:
  - 定義 Schema: 10 分鐘
  - 自動生成類型: 0 分鐘
  - 自動驗證: 0 分鐘
  - 業務邏輯: 30 分鐘 ← 75% 的時間!

革命性改變:

從「代碼定義類型」→「數據定義類型」
從「70% 搞類型」  →「25% 搞類型,75% 業務邏輯」
從「前後端不同步」→「單一事實來源,完美同步」

閱讀完整分析 →

🎉 為什麼選擇 Schema-DD?

傳統方式的痛點

  • ❌ 前後端 API 契約不一致
  • ❌ 手寫大量重複的驗證測試
  • ❌ API 文檔過時
  • ❌ 類型定義分散各處
  • ❌ 版本演進困難

Schema-DD 的解決方案

  • 單一事實來源: 一個 Schema 統治所有
  • TDD 2.0: 修改 Schema = 修改所有測試
  • 運行時驗證: Rust 比 Python 快 10-100 倍
  • 完全自動化: CI/CD 處理一切
  • 跨語言: 前後端完美同步

效率提升

  • 開發速度: 4-10 倍提升
  • 文檔準確: 100% (自動生成)
  • 錯誤率: 降低 100 倍
  • 維護成本: 降低 80-90%

開始使用: Quick Start Guide

深入學習: 完整方法論 (SKILL.md)

真實案例: Case Studies

語言參考: References


Made with ❤️ by Schema-DD Community

如果你相信類型系統革命,請給這個 repo 一個 Star ⭐!