跳转至

重构清理

安全地识别并移除死代码,并在每一步进行测试验证。

步骤 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 查找零导入的导出:

# Find exports, then check if they're imported anywhere

步骤 2:分类发现结果

将发现结果按安全级别分类:

级别 示例 操作
安全 未使用的工具函数、测试辅助函数、内部函数 可放心删除
谨慎 组件、API 路由、中间件 确认没有动态导入或外部消费者
危险 配置文件、入口点、类型定义 操作前先调查

步骤 3:安全移除循环

对于每个安全项:

  1. 运行完整测试套件 — 建立基线(全部通过)
  2. 删除死代码 — 使用 Edit 工具进行精准移除
  3. 再次运行测试套件 — 检查是否有破坏
  4. 如果测试失败 — 立即使用 git checkout -- <file> 回滚并跳过此项
  5. 如果测试通过 — 继续下一项

步骤 4:处理谨慎项

删除谨慎项之前: - 查找动态导入:import(), require(), __import__ - 查找字符串引用:配置中的路由名称、组件名称 - 检查是否由包的公共 API 导出 - 确认没有外部消费者(如果已发布,检查依赖方)

步骤 5:合并重复项

移除死代码后,查找: - 几乎重复的函数(相似度 >80%)— 合并为一个 - 冗余的类型定义 — 合并 - 无价值的包装函数 — 内联 - 无目的的重新导出 — 移除间接层

步骤 6:总结

报告结果:

Dead Code Cleanup
──────────────────────────────
Deleted:   12 unused functions
           3 unused files
           5 unused dependencies
Skipped:   2 items (tests failed)
Saved:     ~450 lines removed
──────────────────────────────
All tests passing PASS:

规则

  • 运行测试前绝不删除
  • 一次只移除一项 — 原子变更便于回滚
  • 如有疑问,跳过 — 保留死代码好过破坏生产环境
  • 清理期间不要重构 — 分离职责(先清理,后重构)

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC