用途:对既有代码进行系统性重构,改善可读性、可维护性与性能,同时保持外部行为不变。适用于代码清理、降低技术债、改善组织、应用设计模式、拆分大文件或函数、消除重复、现代化遗留代码、提升可测试性,以及测试重构与数据管道重构。
主要能力:识别代码坏味道,如长方法(>50 行)、大类(>300 行)、重复代码块、高圈复杂度、魔法数字与字符串字面量、深层嵌套(>3 层)、特性依恋、霰弹式修改、数据泥团、基本类型偏执。提供代码组织模式(提取方法/函数、提取类、移动方法/字段、内联方法/变量、重命名)、结构模式(以多态替换条件、引入参数对象、以常量替换魔法数字、分解条件)、测试重构模式(提取测试夹具、测试数据构建器、替换断言轮盘、提取测试助手)与数据管道模式(提取转换、引入管道接口、以阶段替换内联处理)。
使用方式:先用 Grep/Glob 搜索模式,例如 rg "^(\s*)(def|function|fn|func)\s+\w+" --after-context=60 查找长函数,rg --multiline "pattern.*\n.*pattern" 查找重复代码,rg "\b\d{2,}\b" --type=py --type=js --type=rs 查找魔法数字。随后规划重构:验证测试覆盖、列出变更顺序、识别依赖、规划回滚点、检查影响。执行时每次只做一个重构,运行测试,提交检查点,重复进行。若测试失败立即回退(git checkout),分析是测试问题还是行为变化。提交信息格式如 refactor: extract calculate_discount from process_order。最后验证:全部测试通过、无功能回归、热路径性能未退化、覆盖率保持或提升、lint 通过、构建成功。
适用场景:单模块/文件局部重构、模式应用、测试套件改进、数据管道重构、有测试覆盖的安全重构。
限制与注意:无测试覆盖、影响有外部消费者的公共 API、所有权不清或多团队参与、性能关键热路径等属于需升级的红旗情况。应小步增量、测试先行、一次只做一件事、保持外部行为不变、每步后代码可运行、在提交中说明意图、同时重构测试、利用类型系统、先测量再优化、避免过度工程。若测试意外失败、范围扩大、架构影响不明、出现性能或安全顾虑,应停止并提交当前进度、记录剩余工作。