美文网首页
重构读书笔记-9_1-Decompose_Conditional

重构读书笔记-9_1-Decompose_Conditional

作者: MR_Model | 来源:发表于2019-07-08 09:30 被阅读0次

    重构第九章

    1.Decompose Conditional(分解条件式)

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

    Example:

    if(date.before(SUMMER_START) || data.after(SUMMER_END)) {
        charge = quantity * _winterRate + _winterServiceCharge;
    } else {
        charge = quantity * _summerRate;
    }
    

    End:

    if(notSummer(date)) {
        charge = winterCharge(quantity);
    } else {
        charge = summerCharge(quantity);
    }
    
    private boolean notSummer() {
        return date.before(SUMMER_START) || data.after(SUMMER_END);
    } 
    private double summerCharge(double quantity) {
        return quantity * _summerRate;
    }
    private double winterCharge(double quantity) {
        return quantity * _winterRate + _winterServiceCharge;
    }
    

    Conclusion:

    将分支语句的每一个分支独立称为一个函数,可以突出条件逻辑,更加清楚的表达每个分支的作用,并且突出每个分支的原因,更加清楚的表达自己的意图。

    也许上述示例中的表达式比较短小,可能不需要进行重构,也可以轻松读懂函数的意图。不过,使用了Decompose Conditional(分解条件式)重构方法后,我们的提炼出来的函数可能性更加好一些。

    注意

    重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!

    相关文章

      网友评论

          本文标题:重构读书笔记-9_1-Decompose_Conditional

          本文链接:https://www.haomeiwen.com/subject/hlenhctx.html