• 简化条件表达式之合并条件表达式(Consolidate Condaitional Expression)


    你有一系列条件测试,都得到相同结果。将这些测试合并为一个条件表达式,并将这个条件表达式提炼为一个独立函数。

                动机:

                   有时你会发现这样一串条件检查:检查条件各不相同,最终行为却一致。如果发现这种情况,就应该使用“逻辑或”和“逻辑与”将它们合并为一个条件表达式。

           之所以要合并条件表达式,有2个重要原因。首先,合并后的条件代码会告诉你“实际上只有一次条件检查,只不过有多个并列条件需要检查而已”,从而使这一次检查的用意更清晰。当然,合并前和合并后的代码有着相同的结果,但原先代码传达出的信息却是“这里有一些各自独立的条件测试,它们只是恰好同时发生”。其次,这项重构往往可以为你使用Extract Method(提炼方法)做好准备。将检查条件提炼成一个独立函数对于厘清代码意义非常有用,因为它把描述“做什么“的语句换成了“为什么这样做”。

           条件语句的合并理由也同时指出了不要合并的理由:如果你认为这些条件检查的确彼此独立,的确不应该被视为同一次检查,那么就不要使用本项重构。因为在这种情况下,你的代码已经清晰表达出自己的意义。

          做法:

           1、确定这些条件语句没有副作用。如果条件表达式有副作用,就不能使用本项重构。

           2、使用恰当的逻辑操作符,将一系列相关条件表达式合并为一个。

           3、编译、测试。

           4、对合并后的条件表达式实施 Extract Method(提炼方法)。

    double disabilityAmount(){
        if(seniority<2) return 0;
        if(monthsDisabled<2) return 0;
        if(isPartime<2) return 0;
    }

    在这段代码中,使用了一连串的条件检查,检查条件各不相同,但是最终的行为是一致的。如果发现了这种情况,就可以使用“逻辑或”和“逻辑与”将它们合并为一个条件表达式。这段代码可以调整为:

    double disabilityAmount(){
        if(isNotEligableForDisability()) return 0;
    }

    之所以要这么做,有两个原因。

    首先,合并后的条件代码会告诉你“实际上只有一次条件检查,只不过有多个并列条件需要检查而已”,从而使这一次检查的用意更清晰。

    其次,这项重构往往可以为你使用“提取方法”做好准备。将检查条件提炼成一个独立函数对于理清代码意义非常有用,因为它把描述“做什么”的语句换成了“为什么这样做”。

  • 相关阅读:
    android开发之socket通信 向PC机发信息
    android:screenOrientation的说明
    java环境变量配置
    maven-webapp项目pom.xml配置
    maven设置本地仓库及配置阿里云镜像
    zxing生成二维码
    jQuery日期获取月和星期
    jquery实现导航栏分级切换
    servlet监听器统计在线人数
    xml配置utf-8编码过滤器
  • 原文地址:https://www.cnblogs.com/newbee0101/p/11981797.html
Copyright © 2020-2023  润新知