Files
everything-claude-code/docs/zh-CN/commands/refactor-clean.md
2026-03-29 21:21:18 -04:00

84 lines
2.8 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.
# 重构清理
通过测试验证安全识别和删除死代码的每一步。
## 步骤 1检测死代码
根据项目类型运行分析工具:
| 工具 | 查找内容 | 命令 |
|------|--------------|---------|
| 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分类发现结果
将发现结果按安全层级分类:
| 层级 | 示例 | 操作 |
|------|----------|--------|
| **安全** | 未使用的工具函数、测试辅助函数、内部函数 | 放心删除 |
| **谨慎** | 组件、API 路由、中间件 | 验证没有动态导入或外部使用者 |
| **危险** | 配置文件、入口点、类型定义 | 在操作前仔细调查 |
## 步骤 3安全删除循环
对于每个 **安全** 项:
1. **运行完整测试套件** — 建立基准(全部通过)
2. **删除死代码** — 使用编辑工具进行精确删除
3. **重新运行测试套件** — 验证没有破坏任何功能
4. **如果测试失败** — 立即使用 `git checkout -- <file>` 回滚并跳过此项
5. **如果测试通过** — 处理下一项
## 步骤 4处理谨慎项
在删除 **谨慎** 项之前:
* 搜索动态导入:`import()``require()``__import__`
* 搜索字符串引用:配置中的路由名称、组件名称
* 检查是否从公共包 API 导出
* 验证没有外部使用者(如果已发布,请检查依赖项)
## 步骤 5合并重复项
删除死代码后,查找:
* 近似的重复函数(>80% 相似)— 合并为一个
* 冗余的类型定义 — 整合
* 没有增加价值的包装函数 — 内联它们
* 没有作用的重新导出 — 移除间接引用
## 步骤 6总结
报告结果:
```
无用代码清理
──────────────────────────────
已删除: 12 个未使用函数
3 个未使用文件
5 个未使用依赖项
已跳过: 2 个项目(测试失败)
已节省: ~450 行代码被移除
──────────────────────────────
所有测试通过 PASS:
```
## 规则
* **切勿在不先运行测试的情况下删除代码**
* **一次只删除一个** — 原子化的变更便于回滚
* **如果不确定就跳过** — 保留死代码总比破坏生产环境好
* **清理时不要重构** — 分离关注点(先清理,后重构)