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

81 lines
3.0 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.

# 重構與清理 (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 行程式碼
──────────────────────────────
所有測試皆已通過 ✅
```
## 規則
- **在執行測試之前,絕對不要刪除任何東西**
- **一次只刪除一項** — 原子化變更有助於輕鬆回滾
- **如果不確定,請跳過** — 保留死碼總比破壞生產環境好
- **清理時不要進行重構** — 關注點分離 (先清理,稍後再重構)