用途:在意图行为不变的前提下调整 Rails 代码结构,例如重命名、移动、提取抽象、拆分职责或重构控制器编排。核心原则是小步可回退优先于大范围重写,把设计改进与行为变更分开。
主要能力与流程:先定义稳定行为,明确哪些输入输出与公共接口不能改变;再添加特征测试(characterization tests),该测试必须在当前未重构代码上通过后才能开始;随后选择最小的安全改动切片,一次只处理一个边界;执行重命名、移动或提取后立即验证;最后移除兼容垫片。每个重构步骤后运行完整测试套件,读取退出码与失败数,失败则停止、撤销并排查,通过才进入下一步。
硬性约束:没有特征测试不得开始重构;同一步骤内绝不混入行为变更,如需行为变更应先在独立步骤完成结构重构,再以单独步骤加自己的测试实施行为变更;每个重构步骤只处理一个边界,不要在同一步提取两个抽象;公共接口变更时需记录兼容垫片及其移除条件;不得伪造测试输出,只有实际运行结果才能标注为 Observed output,且每个步骤都要报告测试运行输出,至少在不同序列点提供两条独立实测记录。
使用方式与示例:为所重构文件镜像编写 spec,例如在 spec/requests/orders_spec.rb 中描述当前行为,运行 bundle exec rspec spec/requests/orders_spec.rb 确认在当前代码上通过。控制器编排可用面向对象方式抽取,例如把 OrderCreator 与 NotifyWarehouseJob 的调用收敛为 Orders::CreateOrder.call(params: params),从而减少控制器职责。
扩展资源:仅在需要时加载 assets/complete_example.md(含完整分步示例、稳定行为、特征测试与验证输出)以及 EXAMPLES.md(提取服务与分批重命名示例)。
限制:资料仅围绕 Rails 与 RSpec 测试驱动重构流程,未提供具体收费、平台支持范围、性能指标或安装命令等信息;相关事实暂未提供。