《重构:改善既有代码的设计》读书笔记4 简化条件表达式

(1)Decompose Conditional 分解条件表达式

你有一个复杂的条件(if-then-else)语句。从if、else、else三个段落中分别提炼出独立函数。

1 if(data.before(SUMMER_START)||data.after(SUMMER_END))
2     charge=quantity*_winterRate+_winterServiceCharge;
3 else charge=quantity*_summerRate;
4 
5 -->
6 
7 if(notSummer(date))
8     charge=winterCharge(quantity);
9 else charge=summerCharge(quantity);

复杂的条件逻辑是导致复杂度上升的地点之一,编写代码来检查不同的条件分支、昨不同的事会得到一个很长的函数。大型函数自身就会使代码的可读性下降,而条件逻辑会使代码更难阅读, 将每条分支分解成新函数,可以突出条件逻辑。

 

(2)Consolidate Conditional Expression 合并条件表达式

一些列测试条件得到相同的结果,将这些测试合并为一个表达式。

double disabillityAmount(){
    if(seniority<2)  return 0;
    if(isPartTime) return 0;
}

-->
double disabillityAmount(){
if(seniority<2||isPartTime)
    return 0;
}

-->
double double disabillityAmount(){
if(function())
return 0
}

(3)Consolidate Duplicate Conditional Fragments(合并重复的条件片段)

在条件表达式每个分支上有着相同的一段代码,将这段重复代码搬移到条件表达式之外。如果try 和catah 有重复代码 移到final区域。

if(judge()){
    total = price * 0.5;
    send();
}
else{
    total = price * 0.8;
    send();
}

==>
if(judge()){
    total = price * 0.5;
}
else{
    total = price * 0.8;
}

send()
上一篇:IP2723T中文规格书PDF


下一篇:设计模式之☞适配器模式,通俗易懂,一学就会!!!