Files
gh-cashwu-claude-code-tdd-m…/commands/tf-green.md
2025-11-29 18:03:45 +08:00

188 lines
3.5 KiB
Markdown
Raw 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的Green階段。實作功能讓失敗的測試通過。
---
# TDD Green階段實作功能
執行TDD的Green階段實作最小功能讓測試通過。
**【功能名】**{{feature_name}}
## 事前準備
請確認:
- Red 階段的測試已建立
- 測試執行後會失敗
- memo.md 已記錄 Red 階段進度
## Green 階段目標
**實作最小功能讓測試通過。**
**重要原則:**
- 只要能讓測試通過就好
- 程式碼簡潔優先,不用考慮完美
- 複雜的最佳化留到 Refactor 階段
- 先求能動,再求完美
## 實作原則
### 1. 最小實作優先
```javascript
// ❌ 不要一開始就寫複雜的實作
function calculate(a, b) {
// 複雜的驗證和錯誤處理
// 效能最佳化
// 各種邊界條件處理
...
}
// ✅ 先寫最簡單能通過測試的程式碼
function calculate(a, b) {
return a + b;
}
```
### 2. 階段性實作
- 先讓一個測試通過
- 再讓下一個測試通過
- 逐步增加功能
### 3. 容許暫時的解決方案
- 可以使用硬編碼
- 可以先忽略邊界條件
- 重構階段再改善
## 實作程式碼註解要求
### 函式層級註解
```javascript
/**
* 【功能說明】:此函式的功能
* 【實作方針】:為什麼這樣實作
* 【對應測試】:為了通過哪個測試
*
* @param {type} paramName - 參數說明
* @returns {type} - 回傳值說明
*/
function functionName(paramName) {
// 實作內容
}
```
### 處理區塊註解
```javascript
function processData(input) {
// 【輸入驗證】:檢查輸入是否有效
if (!input) {
throw new Error('輸入不可為空');
}
// 【主要處理】:核心功能實作
const result = doSomething(input);
// 【回傳結果】:回傳處理結果
return result;
}
```
### 變數註解
```javascript
// 【初始化】:設定初始值
const initialValue = 0;
// 【計數器】:追蹤處理數量
let count = 0;
```
## 實作步驟
1. **執行測試確認失敗**
```bash
npm test
```
2. **實作最小功能**
- 只實作讓測試通過所需的程式碼
- 加入繁體中文註解
- 保持程式碼簡單
3. **再次執行測試**
- 確認測試通過
- 如果失敗,修正後重試
4. **更新 memo.md**
- 記錄實作內容
- 標註下一步改善項目
## memo.md 更新格式
在 memo.md 中加入 Green 階段記錄:
```markdown
## Green 階段(實作功能)
### 日期
{當前日期時間}
### 實作內容
{簡述實作了什麼功能}
### 實作檔案位置
{實作檔案路徑}
### 測試結果
- ✅ 測試 1通過
- ✅ 測試 2通過
...
### 待改善項目
{列出應該在 Refactor 階段改善的地方}
### 下一步
進入 Refactor 階段,改善程式碼品質。
```
## 常見的最小實作策略
### 策略 1硬編碼
```javascript
// 先用固定值通過測試
function getGreeting() {
return "Hello, World!";
}
```
### 策略 2假實作
```javascript
// 先回傳符合格式的假資料
function fetchData() {
return { status: 'success', data: [] };
}
```
### 策略 3簡單邏輯
```javascript
// 用最簡單的邏輯實作
function isEven(num) {
return num % 2 === 0;
}
```
## 品質檢查
完成後請確認:
- ✅ 所有測試都通過
- ✅ 實作程式碼有繁體中文註解
- ✅ 程式碼簡單易懂
- ✅ 已記錄到 memo.md
- ✅ 已標註待改善項目
## 下一步
Green 階段完成後,執行:
```
/tf-refactor
```
開始改善程式碼品質Refactor 階段)。