首页/开发/代码质量与评审速查/手法:Decompose Conditional(分解条件表达式)
重构手法62 条

手法:Decompose Conditional(分解条件表达式)

把复杂条件拆成命名函数:条件判断与各分支各自成函数,主干只剩意图表达;与 Extract Function 组合使用,分支逻辑可分别测试。

拆分对象条件表达式函数 + 各分支函数
收益骨架清晰,分支逻辑可单独验证

Java 示例

Java 示例
// 之前
if (date.before(SUMMER_START) || date.after(SUMMER_END)) {
    charge = quantity * winterRate + winterServiceCharge;
} else {
    charge = quantity * summerRate;
}

// 之后
if (notSummer(date)) {
    charge = winterCharge(quantity);
} else {
    charge = summerCharge(quantity);
}

易错点

  • 拆出的函数名照抄表达式:没有提升意图层次
  • 分支函数共享可变状态:拆分后仍互相牵连

数据来源与参考

  • 《重构》第 2 版 · 第 10 章(Decompose Conditional)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌