重构与清理(Refactoring & Cleanup)

中级 Intermediate 流程型 Process ⚡ Claude Code 专属 ⚡ Claude Code Optimized
4 min read · 181 lines

系统化死代码清理,每步验证确保不破坏生产环境

来源: everything-claude-code by Affaan Mustafa 原始文件: agents/refactor-cleaner.md + commands/refactor-clean.md

重构与清理(Refactoring & Cleanup)

概述

一套系统化的死代码清理和代码整合工作流。通过分析工具检测未使用的代码、导出和依赖,按安全等级分类后逐步删除,每一步都经过测试验证。核心原则是"宁可保留死代码,也不要破坏生产环境"。

二、清理命令(Command)

安全地识别和移除死代码,每一步都有测试验证

第 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 步:将发现分类为安全等级

等级 示例 操作
安全(SAFE) 未使用的工具函数、测试辅助函数、内部函数 放心删除
谨慎(CAUTION) 组件、API 路由、中间件 验证无动态导入或外部消费者
危险(DANGER) 配置文件、入口点、类型定义 删除前先调查

第 3 步:安全删除循环

对每个"安全(SAFE)"项目:

  1. 运行完整测试套件 -- 建立基线(全部通过)
  2. 删除死代码 -- 使用编辑工具进行精确移除
  3. 重新运行测试套件 -- 验证没有破坏任何东西
  4. 如果测试失败 -- 立即用 git checkout -- <file> 回退并跳过此项
  5. 如果测试通过 -- 继续处理下一项

第 4 步:处理"谨慎(CAUTION)"项目

删除"谨慎"项目前:

  • 搜索动态导入:import()require()__import__
  • 搜索字符串引用:路由名称、配置中的组件名称
  • 检查是否从公共包 API 导出
  • 验证无外部消费者(如果已发布则检查依赖方)

第 5 步:整合重复代码

移除死代码后,查找:

  • 近似重复的函数(>80% 相似)-- 合并为一个
  • 冗余的类型定义 -- 统一整合
  • 不增加价值的包装函数 -- 内联它们
  • 无用的再导出(Re-exports)-- 移除间接层

第 6 步:总结

报告结果:

死代码清理报告
-------------------------------
已删除:   12 个未使用的函数
           3 个未使用的文件
           5 个未使用的依赖
已跳过:    2 个项目(测试失败)
节省:     约 450 行已移除
-------------------------------
所有测试通过

三、核心规则

  • 删除前务必先运行测试
  • 一次删除一项 -- 原子化变更使回滚更容易
  • 不确定时跳过 -- 保留死代码好过破坏生产环境
  • 清理时不要重构 -- 分离关注点(先清理,再重构)

四、成功指标

  • 所有测试通过
  • 构建成功
  • 无回归问题
  • 包体积减小

相关技能 Related Skills