美文网首页
重构读书笔记-9_5-Replace_Nested_Condit

重构读书笔记-9_5-Replace_Nested_Condit

作者: MR_Model | 来源:发表于2019-07-12 10:00 被阅读0次

    重构第九章

    5.Replace Nested Conditional With Guard Clauses(以卫语句取代嵌套条件式)

    函数中的条件逻辑使人难以看清正常的执行路径。使用卫语句表现所有特殊情况

    Example:

    double getPayAmount() {
        double result;
        if(_isDead) {
            result = deadAmount();
        } else {
            if(_isSeparated) {
                result = separatedAmount();
            } else {
                if(_isRetired) {
                    result = retiredAmount();
                } else {
                    result = normalPayAmount();
                }
            }
        }
    }
    

    Analyse:
    卫语句:如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真的时候从函数中返回。
    Replace Nested Conditional With Guard Clauses(以卫语句取代嵌套条件式)的精髓是:给某一条分支以特别的重视。如果使用if-then-else结构,你对if分支和else分支的重视是同等的。而卫语句不同,它表现出来:这种情况很罕见,如果它真的发生了,请做一些必要的整理工作,然后退出。

    And:

    double getPayAmount() {
        double result;
        if(_isDead) return deadAmount();
        if(_isSeparated) return separatedAmount();
        if(_isRetired) return retiredAmount();
        return normalPayAmount();
    }
    

    Conclusion:

    Replace Nested Conditional With Guard Clauses(以卫语句取代嵌套条件式)使得阅读者不在去看没有用到的else区段,提高程序的清晰度

    注意

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

    相关文章

      网友评论

          本文标题:重构读书笔记-9_5-Replace_Nested_Condit

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