重构读书笔记-9_5-Replace_Nested_Conditional_With_Guard_Clauses

重构第九章

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区段,提高程序的清晰度

注意

重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • chapter 1 重构,第一个案例 1.1 什么时候需要重构 需要为程序添加一个特性,但代码结构无法使自己方便的...
    VictorBXv阅读 2,202评论 0 1
  • 第一章 重构,第一个案例 如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个...
    文浩读书阅读 949评论 0 0
  • 可以先看【推荐】:https://www.jianshu.com/p/d6ff54d72afb原文:http://...
    郭某人1阅读 1,963评论 0 0
  • 阅读《重构》的笔记献上。 重构的定义 重构是在不改变软件可观察行为的前提下改善其内部结构。 重构的节奏 以微小的步...
    陈宇明阅读 11,747评论 13 64
  • 并且蔡文姬家境殷实,家里藏书四千卷书。不过由于战乱,藏书已经丢失,当曹操知道蔡文姬还能背下四百多篇的时候不觉得大喜...
    杨秀宝聚成阅读 471评论 0 0

友情链接更多精彩内容