--- description: 啟動新的 TDD 會話。遵循 Kent Beck 的純粹 TDD 理念,從第一個測試開始。 --- # TDD Start - 啟動 TDD 會話 開始一個新的 TDD 開發會話。遵循 Kent Beck 的理念:從測試開始,讓設計演進。 **【功能想法】**:{{brief_idea}} ## Kent Beck 的起點 > "開始時不要想太多,從最簡單的測試開始。" **不要做:** - ❌ 寫完整的需求文件 - ❌ 規劃所有測試案例 - ❌ 事先設計類別結構 - ❌ 想太多細節 **要做:** - ✅ 想一個最簡單的情境 - ✅ 寫出第一個測試 - ✅ 讓測試驅動設計 ## 開始步驟 ### 1. 建立開發記錄 在 `docs/tdd/{feature_name}/` 建立: ``` journey.md - TDD 開發旅程記錄(不是計劃) ``` ### 2. 想第一個測試 問自己: - 什麼是最簡單的使用情境? - 什麼是最明顯的行為? - 從哪裡開始最容易? **範例思考過程:** ``` 功能想法:「計算購物車總價」 ❌ 不要想: - 需要支援優惠券 - 需要處理多幣別 - 需要計算稅金 - ... ✅ 只想: 「一個商品的購物車,總價應該等於商品價格」 這就是第一個測試! ``` ### 3. journey.md 初始格式 ```markdown # {feature_name} TDD Journey ## 開始想法 {簡單描述要做什麼,1-2 句話} ## TDD 循環記錄 ### 第 1 輪 - {日期時間} #### 🤔 想法 {為什麼要寫這個測試?} #### 📝 下一步 執行 /kb-red 寫第一個測試 ``` ## 心態準備 Kent Beck 強調的 TDD 心態: **好奇心** - "如果我這樣寫測試會怎樣?" - 用測試來探索問題 **勇氣** - 敢於寫會失敗的測試 - 敢於用最簡單的方式實作 **簡單** - 從最簡單的開始 - 不要過度設計 **反饋** - 頻繁執行測試 - 快速得到反饋 ## 範例:開始一個 Money 類別 ```markdown # Money TDD Journey ## 開始想法 建立一個 Money 類別,可以處理金錢運算。 ## TDD 循環記錄 ### 第 1 輪 - 2025-10-15 21:30 #### 🤔 想法 最簡單的情境:5 元乘以 2 應該等於 10 元。 #### 📝 下一步 執行 /kb-red 寫第一個測試 ``` ## 下一步 準備好了嗎?執行: ``` /kb-red ``` 開始寫你的第一個測試! ## 記住 Kent Beck 的話 > "TDD 的目的不是測試,而是思考。" > "從最簡單的測試開始,讓複雜度自然演進。" > "如果不知道該寫什麼測試,那就寫一個你知道答案的測試。"