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

3.5 KiB
Raw Blame History

description
description
執行TDD的Green階段。實作功能讓失敗的測試通過。

TDD Green階段實作功能

執行TDD的Green階段實作最小功能讓測試通過。

【功能名】{{feature_name}}

事前準備

請確認:

  • Red 階段的測試已建立
  • 測試執行後會失敗
  • memo.md 已記錄 Red 階段進度

Green 階段目標

實作最小功能讓測試通過。

重要原則:

  • 只要能讓測試通過就好
  • 程式碼簡潔優先,不用考慮完美
  • 複雜的最佳化留到 Refactor 階段
  • 先求能動,再求完美

實作原則

1. 最小實作優先

// ❌ 不要一開始就寫複雜的實作
function calculate(a, b) {
  // 複雜的驗證和錯誤處理
  // 效能最佳化
  // 各種邊界條件處理
  ...
}

// ✅ 先寫最簡單能通過測試的程式碼
function calculate(a, b) {
  return a + b;
}

2. 階段性實作

  • 先讓一個測試通過
  • 再讓下一個測試通過
  • 逐步增加功能

3. 容許暫時的解決方案

  • 可以使用硬編碼
  • 可以先忽略邊界條件
  • 重構階段再改善

實作程式碼註解要求

函式層級註解

/**
 * 【功能說明】:此函式的功能
 * 【實作方針】:為什麼這樣實作
 * 【對應測試】:為了通過哪個測試
 *
 * @param {type} paramName - 參數說明
 * @returns {type} - 回傳值說明
 */
function functionName(paramName) {
  // 實作內容
}

處理區塊註解

function processData(input) {
  // 【輸入驗證】:檢查輸入是否有效
  if (!input) {
    throw new Error('輸入不可為空');
  }

  // 【主要處理】:核心功能實作
  const result = doSomething(input);

  // 【回傳結果】:回傳處理結果
  return result;
}

變數註解

// 【初始化】:設定初始值
const initialValue = 0;

// 【計數器】:追蹤處理數量
let count = 0;

實作步驟

  1. 執行測試確認失敗

    npm test
    
  2. 實作最小功能

    • 只實作讓測試通過所需的程式碼
    • 加入繁體中文註解
    • 保持程式碼簡單
  3. 再次執行測試

    • 確認測試通過
    • 如果失敗,修正後重試
  4. 更新 memo.md

    • 記錄實作內容
    • 標註下一步改善項目

memo.md 更新格式

在 memo.md 中加入 Green 階段記錄:

## Green 階段(實作功能)

### 日期
{當前日期時間}

### 實作內容
{簡述實作了什麼功能}

### 實作檔案位置
{實作檔案路徑}

### 測試結果
- ✅ 測試 1通過
- ✅ 測試 2通過
...

### 待改善項目
{列出應該在 Refactor 階段改善的地方}

### 下一步
進入 Refactor 階段,改善程式碼品質。

常見的最小實作策略

策略 1硬編碼

// 先用固定值通過測試
function getGreeting() {
  return "Hello, World!";
}

策略 2假實作

// 先回傳符合格式的假資料
function fetchData() {
  return { status: 'success', data: [] };
}

策略 3簡單邏輯

// 用最簡單的邏輯實作
function isEven(num) {
  return num % 2 === 0;
}

品質檢查

完成後請確認:

  • 所有測試都通過
  • 實作程式碼有繁體中文註解
  • 程式碼簡單易懂
  • 已記錄到 memo.md
  • 已標註待改善項目

下一步

Green 階段完成後,執行:

/tf-refactor

開始改善程式碼品質Refactor 階段)。