重构清理¶
安全地识别未使用的代码,并在每一步通过测试验证后将其移除。
第 1 步:检测未使用的代码¶
根据项目类型运行分析工具:
| 工具 | 检测目标 | 命令 |
|---|---|---|
| knip | 未使用的 exports、文件、依赖 | npx knip |
| depcheck | 未使用的 npm 依赖 | npx depcheck |
| ts-prune | 未使用的 TypeScript exports | npx ts-prune |
| vulture | 未使用的 Python 代码 | vulture src/ |
| deadcode | 未使用的 Go 代码 | deadcode ./... |
| cargo-udeps | 未使用的 Rust 依赖 | cargo +nightly udeps |
如果没有可用的工具,使用 Grep 查找没有 import 的 export:
第 2 步:结果分类¶
按安全等级对结果进行分类:
| 等级 | 示例 | 措施 |
|---|---|---|
| 安全 | 未使用的工具函数、测试辅助函数、内部函数 | 有把握地删除 |
| 注意 | 组件、API 路由、中间件 | 确认没有动态 import 或外部消费者 |
| 危险 | 配置文件、入口点、类型定义 | 需要在改动前进行调查 |
第 3 步:安全删除循环¶
对每个安全项:
- 运行完整测试套件 --- 建立基线(全部通过)
- 删除未使用的代码 --- 使用 Edit 工具精确移除
- 重新运行测试套件 --- 确认没有破坏任何东西
- 测试失败时 --- 立即用
git checkout -- <file>还原,并跳过该项 - 测试通过时 --- 继续下一项
第 4 步:处理注意项¶
在删除注意项之前:
- 搜索动态 import:import()、require()、__import__
- 搜索字符串引用:路由名称、配置文件中的组件名称
- 确认是否从公开包 API 导出
- 确认没有外部消费者(若已发布,检查依赖包)
第 5 步:合并重复项¶
移除未使用的代码后,寻找以下内容: - 几乎重复的函数(相似度 80% 以上)--- 合并为一个 - 重复的类型定义 --- 统一 - 不增加价值的包装函数 --- 内联处理 - 没有目的的 re-export --- 移除间接引用
第 6 步:总结¶
报告结果:
Dead Code Cleanup
──────────────────────────────
삭제: 미사용 함수 12개
미사용 파일 3개
미사용 의존성 5개
건너뜀: 항목 2개 (테스트 실패)
절감: 약 450줄 제거
──────────────────────────────
모든 테스트 통과 PASS:
规则¶
- 绝不先运行测试就删除
- 一次只删除一项 --- 原子性变更易于回滚
- 不确定就跳过 --- 保留未使用的代码比破坏生产环境更好
- 清理时不要重构 --- 关注点分离(先清理,后重构)
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC