claude-code/claude-zh/commands/refactor-clean.md

81 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

2026-02-27 13:45:37 +00:00
# 重構與清理 (Refactor Clean)
安全地識別並移除死碼 (Dead code),且在每一步磁都執行測試驗證。
## 步驟 1偵測死碼 (Dead Code)
根據專案類型執行分析工具:
| 工具 | 發現內容 | 指令 |
|------|--------------|---------|
| knip | 未使用的匯出、檔案、依賴項 | `npx knip` |
| depcheck | 未使用的 npm 依賴項 | `npx depcheck` |
| ts-prune | 未使用的 TypeScript 匯出 | `npx ts-prune` |
| vulture | 未使用的 Python 程式碼 | `vulture src/` |
| deadcode | 未使用的 Go 程式碼 | `deadcode ./...` |
| cargo-udeps | 未使用的 Rust 依賴項 | `cargo +nightly udeps` |
如果沒有可用工具,請使用 Grep 尋找匯入次數為零的匯出內容:
```
# 尋找匯出項目,然後檢查其是否在任何地方被匯入
```
## 步驟 2將結果分類
將發現的內容按安全等級分類:
| 等級 | 範例 | 行動 |
|------|----------|--------|
| **安全 (SAFE)** | 未使用的工具函式、測試助手、內部函式 | 放心刪除 |
| **警告 (CAUTION)** | 元件、API 路由、中介軟體 (Middleware) | 驗證無動態匯入或外部使用者 |
| **危險 (DANGER)** | 配置檔案、入口點、型別定義 | 觸碰前需深入調查 |
## 步驟 3安全刪除迴圈 (Safe Deletion Loop)
針對每個標記為「安全」的項目:
1. **執行完整測試套件** — 建立基準線 (確保全部通過)
2. **刪除死碼** — 使用 Edit 工具進行精確刪除
3. **重新執行測試套件** — 驗證是否造成損壞
4. **如果測試失敗** — 立即使用 `git checkout -- <file>` 復原並跳過此項
5. **如果測試通過** — 繼續處理下一個項目
## 步驟 4處理「警告」項目
在刪除「警告」項目之前:
- 搜尋動態匯入:`import()`, `require()`, `__import__`
- 搜尋字串引用:配置檔案中的路由名稱、元件名稱
- 檢查是否為公共套件 API 的匯出項目
- 驗證沒有外部使用者 (如果是已發布的套件,請檢查依賴項)
## 步驟 5合併重複項
移除死碼後,尋找:
- 近乎重複的函式 (>80% 相似) — 合併為一
- 冗餘的型別定義 — 進行整合
- 無實質價值的封裝函式 (Wrapper) — 將其內聯 (Inline)
- 無具體用途的重新匯出 (Re-exports) — 移除間接層
## 步驟 6摘要報告
回報結果:
```
死碼清理摘要
──────────────────────────────
已刪除: 12 個未使用的函式
3 個未使用的檔案
5 個未使用的依賴項
已跳過: 2 個項目 (測試失敗)
節省: 移除了約 450 行程式碼
──────────────────────────────
所有測試皆已通過 ✅
```
## 規則
- **在執行測試之前,絕對不要刪除任何東西**
- **一次只刪除一項** — 原子化變更有助於輕鬆回滾
- **如果不確定,請跳過** — 保留死碼總比破壞生產環境好
- **清理時不要進行重構** — 關注點分離 (先清理,稍後再重構)