美文网首页
第9章 简化条件表达式

第9章 简化条件表达式

作者: 后来丶_a24d | 来源:发表于2020-03-16 16:51 被阅读0次

目录

  • DecomposeConditional(分解条件表达式)
  • ConsolidateConditionalExpression(合并条件表达式)
  • ConsolidateDuplicateConditionalFragments(合并重复的条件片段)
  • RemoveControlFlag(移除控制标记)
  • ReplaceNestedConditionalwithGuardClauses(以卫语句取代嵌套条件表达式)
  • ReplaceConditionalwithPolymorphism(以多态取代条件表达式)
  • IntroduceNullObject(引入Null对象)
  • IntroduceAssertion(引入断言)

简化条件表达式

分解条件表达式

  • 你有一个复杂的条件语句。从if、then、else三个段落中分别提炼出独立函数
  • 对于条件逻辑,将每个分支条件分解为新函数还可以给你带来更多好处:可以突出条件逻辑,更清楚地表明每个分支的作用,并且突出每个分支的原因。

合并条件表达式

  • 你有一系列条件测试,都得到相同结果。将这些测试合并为一个条件表达式,并将这个条件表达式提炼为一个独立函数
  • 有时你会发现这样一串条件检查:检查条件各不相同,最终行为却一致。如果发现这种情况,就应该使用“逻辑或”和“逻辑与”将它们合并为一个条件表达式。
  • 之所以要合并条件表达式,有2个重要原因
  1. 合并后的条件代码会告诉你“实际上只有一次条件检查,只不过有多个并列条件需要检查而已”
  2. 这项重构往往可以为你使用Extract Method(提炼方法)做好准备

合并重复的条件片段

  • 在条件表达式的每个分支上有着相同的一段代码。将这段重复代码移到条件表达式之外。

移除控制标记

  • 在一系列布尔表达式中,某个变量带有“控制标记’的作用。
    以break或return语句取代控制标记。
// 重构前
QString foundPerson(QStringList people){
    QString found = QString();
    for (int i = 0; i < people.size(); ++i) {
        if (people[i].compare("Don") == 0) {
            found = "Don";
        }

        if (people[i].compare("John") == 0){
           found = "John";
        }
    }
    return found;
}

// 用return直接代替if里面的标记
  • 去掉控制标记所产生的效果往往让你大吃一惊:条件语句真正的用途会清晰得多。

以卫语句取代嵌套条件表达式

  • 如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”。
  • 给某个分支以特别的重视。它告诉阅读者:这种情况很罕见,如果它真的发生了,请做一些必要的整理工作,然后退出。

以多态取代条件表达式(比较少用)

  • 你手上一个条件表达式,它根据对象类型的不同而选择不同的行为。将这个条件表达式的每个分支放进一个子类的覆写函数中,然后将原始函数声明为抽象函数

引入Null对象

  • 你需要再三检查某对象是否为null。将null值替换为null对象
  • 重构那本书的例子可以参考重构:引入NULL对象
  • 其实可以考虑Optional对象使用

引入断言

  • 断言可以作为交流与调试的辅助。在交流的角度上,断言可以帮助程序阅读者了解代码所做的假设;在调试的角度上,断言可以在距离bug最近的地方抓住它们。

参考文章

相关文章

  • 第九章 简化条件表达式

    简化条件表达式 9.1 Decompose Conditional (分解条件表达式) 你有一个复杂的条件表达式语...

  • 004-简化条件表达式

    简化条件表达式 1. Decompose Conditional(分解条件表达式) Q:你有一个复杂的条件语句。 ...

  • 简化条件表达式

    0. 本章内容导图 本章提供的重构手法专门用来简化复杂的条件逻辑。 1. 重构手法 1.1 分解条件表达式 概要:...

  • 简化条件表达式

    我们在编写代码的过程中,有时会因为复杂的业务,导致我们编写的代码圈复杂度过大,if...then...else 过...

  • 第9章 简化条件表达式

    目录 DecomposeConditional(分解条件表达式) ConsolidateConditionalEx...

  • 《重构——改善既有代码的设计》读书笔记4

    第九章:简化条件表达式 分解条件表达式将if-then-else对应的三个段落分解为三个函数。动机:条件逻辑语句会...

  • Python代码进阶小技巧

    1. 条件表达式 在两个值之间进行二选一的条件语句中,我们的通常写法是: 其实可以用条件表达式进行简化: 这条语句...

  • 《重构》- 简化条件表达式

    一. Decompose Conditional(分解条件表达式) 介绍 场景你有一个复杂的条件(if-then-...

  • 重构——简化条件表达式

    1 Decompose Conditional(分解条件表达式) 从复杂表达式if-then-else三个段落中分...

  • 重构-简化条件表达式

    分解条件语句复杂的条件判断抽取为方法 重组条件语句可使用 ||= ,显式返回等替换条件语句 合并条件表达式 合并重...

网友评论

      本文标题:第9章 简化条件表达式

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