巩固条件表达式
问题
您有多个导致相同结果或操作的条件。
解决方案
将所有这些条件合并到一个表达式中。
之前
double disabilityAmount() {if(资历< 2){返回0;} if (monthsDisabled > 12){返回0;} if (isPartTime){返回0;} //计算残疾金额。/ /……}
后
double disabilityAmount() {if (isNotEligibleForDisability()){返回0;} //计算残疾金额。/ /……}
之前
double DisabilityAmount() {if(资历< 2){返回0;} if (monthsDisabled > 12){返回0;} if (isPartTime){返回0;} //计算残疾金额。/ /……}
后
double DisabilityAmount() {if (IsNotEligibleForDisability()){返回0;} //计算残疾金额。/ /……}
之前
函数disabilityAmount() {if ($this->资历< 2){返回0;} if ($this->monthsDisabled > 12){返回0;} if ($this->isPartTime){返回0;} //计算残疾金额…
后
function disabilityAmount() {if ($this->isNotEligibleForDisability()){返回0;} //计算残疾金额…
之前
def disabityamount():如果资历< 2,则返回0如果monthsDisabled > 12:如果isPartTime:返回0 #计算残疾数量#……
后
def disabilityAmount(): if isNotEligibleForDisability():返回0 #计算残疾金额。#……
之前
disabilityAmount(): number {if(资历< 2){返回0;} if (monthsDisabled > 12){返回0;} if (isPartTime){返回0;} //计算残疾金额。/ /……}
后
disabilityAmount(): number {if (isNotEligibleForDisability()){返回0;} //计算残疾金额。/ /……}
为什么重构
您的代码包含许多执行相同操作的交替操作符。目前尚不清楚运营商拆分的原因。
合并的主要目的是将条件提取到单独的方法中,以获得更大的清晰度。
好处
消除重复的控制流代码。将具有相同“目标”的多个条件组合在一起有助于表明您只进行了一次导致一个操作的复杂检查。
通过合并所有操作符,您现在可以在一个新方法中隔离这个复杂的表达式,其名称可以解释条件的用途。
如何重构
在重构之前,确保条件没有任何“副作用”或修改某些东西,而不是简单地返回值。副作用可能隐藏在操作符本身内部执行的代码中,例如根据条件的结果向变量添加了一些东西。
使用将条件合并到单个表达式中
而且
而且或
.合并时的一般规则:嵌套条件连接使用
而且
.连续条件句与
或
.
执行提取方法并为该方法指定一个反映表达式目的的名称。