圣诞大减价开始了!

合并重复的条件片段

问题

相同的代码可以在条件的所有分支中找到。

解决方案

将代码移到条件语句之外。

之前
if (isSpecialDeal()){合计=价格* 0.95;send ();} else{合计=价格* 0.98;send ();}
if (isSpecialDeal()){合计=价格* 0.95;} else{合计=价格* 0.98;}发送();
之前
if (IsSpecialDeal()){合计=价格* 0.95;Send ();} else{合计=价格* 0.98;Send ();}
if (IsSpecialDeal()){合计=价格* 0.95;} else{合计=价格* 0.98;}发送();
之前
if (isSpecialDeal()) {$total = $price * 0.95;send ();} else {$total = $price * 0.98;send ();}
if (isSpecialDeal()) {$total = $price * 0.95;} else {$total = $price * 0.98;}发送();
之前
if isSpecialDeal(): total = price * 0.95 send() else: total = price * 0.98 send()
if isSpecialDeal(): total = price * 0.95 else: total = price * 0.98 send()
之前
if (isSpecialDeal()){合计=价格* 0.95;send ();} else{合计=价格* 0.98;send ();}
if (isSpecialDeal()){合计=价格* 0.95;} else{合计=价格* 0.98;}发送();

为什么重构

在条件的所有分支中都可以找到重复的代码,这通常是条件分支中代码演化的结果。团队发展可能是一个促成因素。

好处

  • 代码重复数据删除。

如何重构

  1. 如果复制的代码位于条件分支的开头,则将代码移动到条件分支之前的位置。

  2. 如果代码在分支的末尾执行,则将其放在条件语句之后。

  3. 如果重复的代码随机地位于分支中,首先尝试将代码移动到分支的开头或结尾,这取决于它是否改变后续代码的结果。

  4. 如果合适,并且重复的代码长于一行,请尝试使用提取方法

Baidu
map