Files
2025-11-29 18:03:43 +08:00

130 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 的目的不是測試,而是思考。"
> "從最簡單的測試開始,讓複雜度自然演進。"
> "如果不知道該寫什麼測試,那就寫一個你知道答案的測試。"