---
source: ../../../core/refactoring-standards.md
source_version: 2.1.0
translation_version: 2.1.0
last_synced: 2026-04-22
status: current
---

# 重構標準

> **語言**: [English](../../../core/refactoring-standards.md) | 繁體中文

**版本**: 2.1.0
**最後更新**: 2026-02-10
**適用性**: 所有軟體專案
**範圍**: 通用 (Universal)

---

## 目的

本標準定義重構的時機、安全規則與決策矩陣。關於具體重構模式（如 Extract Method, Strangler Fig）的詳細教學，請參閱 **[重構指南](guides/refactoring-guide.md)**。

---

## 核心規則

1. **紅-綠-重構**: 只有在測試通過 (綠燈) 時才進行重構。
2. **不改變行為**: 重構應改善結構，而非改變外部行為。
3. **小步前進**: 偏好頻繁的小重構，而非大規模的「重寫」。
4. **童子軍法則**: 離開程式碼時，要比你發現它時更乾淨。

---

## 何時重構 (觸發點)

| 觸發點 | 說明 | 建議行動 |
|--------|------|----------|
| **三次法則** | 發現重複程式碼三次 | 提取共用方法或元件 |
| **難以測試** | 程式碼依賴性太高或副作用太多 | 依賴注入、純函式化 |
| **新增功能受阻** | 現有結構難以擴充 | 準備性重構 (Preparatory Refactoring) |
| **Code Review** | 被指出可讀性差或複雜度高 | 修正後再合併 |

---

## 程式碼異味 (Code Smell) 檢查清單

- [ ] **長函式 (Long Method)**: 超過 20-30 行？
- [ ] **大類別 (Large Class)**: 承擔太多責任？
- [ ] **重複程式碼 (Duplicated Code)**: 違反 DRY 原則？
- [ ] **過多參數 (Long Parameter List)**: 超過 3-4 個參數？
- [ ] **特徵依戀 (Feature Envy)**: 一個方法過度使用另一個類別的資料？
- [ ] **魔法數字 (Magic Numbers)**: 未解釋的常數？

---

## 重構安全網

在重構遺留程式碼 (Legacy Code) 前，必須建立安全網：

1. **確認現有測試**: 如果沒有測試，先寫測試（特徵測試 Characterization Tests）。
2. **自動化執行**: 確保測試可以一鍵執行且快速回饋。
3. **版本控制**: 確保在乾淨的 Git 狀態下開始。

---

## 相關標準

- [重構指南](guides/refactoring-guide.md) - 詳細模式與教學
- [測試標準](testing-standards.md)
- [程式碼審查清單](code-review-checklist.md)

---

## 版本歷史

| 版本 | 日期 | 變更 |
|------|------|------|
| 2.0.0 | 2026-01-29 | **重大重構**：拆分為規則（本文件）和指南（refactoring-guide.md）。 |
| 1.0.0 | 2025-12-15 | 初始版本 |

---

## 授權

本標準以 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) 授權發布。
