圣诞大减价开始了!

分解条件

问题

你有一个复杂的条件句(if - then/其他的开关).

解决方案

将条件的复杂部分分解为单独的方法:然后而且其他的

之前
if (date.before(SUMMER_START) || date.after(SUMMER_END)){费用=数量* winterRate + winterServiceCharge;} else{收费=数量* summerRate;}
if (isSummer(日期)){charge = summerCharge(数量);} else{收费= winterCharge(数量);}
之前
if (date < SUMMER_START || date > SUMMER_END){收费=数量* winterRate + winterServiceCharge;} else{收费=数量* summerRate;}
if (isSummer(日期)){费用= SummerCharge(数量);} else{冲锋= WinterCharge(数量);}
之前
if ($date->before(SUMMER_START) || $date->after(SUMMER_END)) {$charge = $quantity * $winterRate + $winterServiceCharge;} else {$charge = $quantity * $summerRate;}
if (isSummer($date)) {$charge = summerCharge($quantity);} else {$charge = winterCharge($quantity);}
之前
if date.before(SUMMER_START)或date.after(SUMMER_END):收费=数量* winterRate + winterServiceCharge否则:收费=数量* summerRate
if isSummer(日期):charge = summerCharge(数量)else: charge = winterCharge(数量)
之前
if (date.before(SUMMER_START) || date.after(SUMMER_END)){费用=数量* winterRate + winterServiceCharge;} else{收费=数量* summerRate;}
if (isSummer(日期)){charge = summerCharge(数量);} else{收费= winterCharge(数量);}

为什么重构

一段代码越长,就越难理解。当代码中充满条件时,事情变得更加难以理解:

  • 当你忙着弄清楚代码在然后Block,你忘记了相关的条件是什么。

  • 当你忙着分析的时候其他的,你忘了代码是什么然后所做的事。

好处

  • 通过将条件代码提取为明确命名的方法,可以使以后维护代码的人(比如您,两个月后!)的工作变得更轻松。

  • 这种重构技术也适用于条件中的短表达式。的字符串isSalaryDay ()比比较日期的代码更漂亮,更具描述性。

如何重构

  1. 将条件提取到单独的方法via提取方法

  2. 重复此过程然后而且其他的块。

Baidu
map