用途:在不改变可观察行为的前提下调整代码内部结构,提升可读性、可维护性与性能。适用于提取方法/类、消除重复逻辑、降低嵌套、替换条件分支等重构场景。
主要能力:以“识别坏味道—套用对应手法”的方式工作,例如长方法用 Extract Method、大类用 Extract Class、重复逻辑用 Extract Method 后上提共享、特性依恋用 Move Method、基本类型偏执用值对象、数据泥团用参数对象、发散式变化按变化轴拆分、深层嵌套用卫语句、类型码 switch 用多态替换、魔法值用命名常量、臆测性通用化用内联。也强调反向手法:过度抽象同样是坏味道,应内联无谓间接层。
使用方式:先跑全量测试建立绿色基线;命名一个坏味道并只选一个手法;做最小机械改动,优先用 IDE/LSP 的 rename、extract function;每步后重跑测试,绿则提交,红则检查当前小 diff;最后跑全量测试、lint 与构建。无测试的遗留代码先写特征测试(golden-master/approval 测试)钉住当前行为。重命名前先用 rg 评估影响范围,并检查字符串、反射、序列化名等引用。
限制与注意:重构提交必须是运行时无操作,不得与行为变更、修 bug、加功能混在同一提交;不得在同一步同时改测试与生产代码;公共 API 重命名属于迁移而非重构;热路径重构可能引入调用开销,需先测量;格式化噪音应单独提交;避免“顺手改”的范围蔓延。若测试失败原因不明、范围失控、触及公共 API 或性能关键路径,应停下并升级处理。