首页/开发/代码质量与评审速查/完整示例:一次条件逻辑重构的前后对照
重构手法62 条

完整示例:一次条件逻辑重构的前后对照

把坏味道与手法串成一次完整重构:从「长函数 + 重复 switch + 深嵌套」到「卫语句 + 多态 + 命名函数」;每一步保持测试绿灯,提交历史可逐步回溯。

完整示例是什么

把坏味道与手法串成一次完整重构:起点是长函数加重复分支加深层嵌套,终点是卫语句、命名函数与多态分工。关键在于每一步都保持测试绿灯,提交历史可以逐步回溯,即使中途发现问题也能定位到具体哪一步引入的。

基本信息

起点坏味道过长函数、重复的分支判断、嵌套条件
手法序列提取函数 → 卫语句 → 以多态取代条件
验收标准全量测试通过,行为对照一致
提交粒度每个手法一次提交
前置动作先用特征测试锁定现状行为

典型使用场景

  • 团队练习重构手法时作为走查范例
  • 评审中讨论要不要拆、拆到哪一步为止
  • 迁移旧代码前先在紧耦合逻辑上验证手法
  • 培训时对照坏味道与动作的对应关系
  • 复盘时回看提交历史,定位哪一步引入问题

重构步骤

重构步骤
1. 补特征测试,锁定现状行为(含边界与异常)
2. 提取函数:把三段职责拆成命名阶段
3. 卫语句:边界提前返回,主干去掉嵌套
4. 以多态取代条件:按类型拆成实现类
5. 删除旧分支与临时函数,跑全量测试
# 每一步一次提交,绿灯后再进行下一步

每步的动机与验收

步骤主要动机验收
锁定行为让后续改动可回归特征测试覆盖主要路径
提取函数主干可读,阶段意图清楚命名表达业务含义
卫语句减少嵌套层级主干缩进明显变浅
多态取代条件新增类型不改调用方旧分支删除且测试通过
提交粒度是小步回滚的前提:每一步只对应一个可解释的动机,评审与定位都更简单;混在一次提交里,红灯时无法判断是哪一步引入的。
跳过行为锁定直接改结构:边界行为在重构中悄悄变化,没有测试能告诉你;等线上出问题时,已经处在排查成本最高的场景。

易错点

  • 跳过行为锁定直接改结构:边界行为变化无法感知
  • 多步并作一次提交:测试红灯时无法定位是哪一步引入
  • 每步都顺手改行为:重构与功能改动混在一起,回滚会带走需要的改动
  • 只演示不落地:示例看懂了但团队没有固定流程,实际重构仍然失控

数据来源与参考

  • 《重构》第 2 版 · 第 1、3、10 章(组合范例)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌