重构-改善既有代码(9)---简化条件表达表达式

1.decompose conditional (分解条件)
在比较复杂的条件判断的方法中,如果有需要我们可以把条件换判断成方法,在不同分支中编写不同方法。
做法:
将if段提炼出来,构成一个独立函数。
将then段落和else段落都提炼出来,各自构成一个独立函数。
这样可以很好的突出条件逻辑,更加清楚的表明分支的作用,以及分支的原因。

2.consolidate conditional expression(合并条件分支)
有一系列的条件判断语句,确返回相同的结果或做了相同的事。我们应该将这一些列条件用 '|','&'或者三元操作符连接起来,并提炼成一个方法。
这样说明了代码实际只做了一次的检查,只不过是有个多个条件语句在同时执行。
另外将条件语句提炼成一个方法对理清代码意义非常有用,因为他把描述 “做什么” 换成了“为什么这样做”

3.consolidate duplicate conditional fragments(合并重复的条件代码)
如果你在不同的条件下确执行了相同的语句,你应该将语句移动刀条件语句以外的代码块,如果相同语句不只一句,你应该将这些代码重新组织成一个方法。
这样能很好体现那些东西是随条件的变化而变化的,那些是一成不变地。

4.remove control flag(移除控制标记)
用 continue break return 替换 flag变量。。
这样会使条件真正的用途清晰很多。

5.replace nested conditional with guard clauses (已卫语句替代嵌套条件表达式)
如果两个条件语句都是正常行为,就应该用if ...else;如果某个条件及其罕见,就应该单独检测该条件,并在该条件为真时,立刻从函数中返回。这样的单独检查常常被称为 guard clauses。
做法:
对于每个检查都放进一个 guard cluases ,guard cluases 要么从方法中返回,要么抛出异常。
replace nested conditional with guard cluases 的精髓在 给某一个条件特别的重视。如果用 if then else 所表达的是 if 和else 的分支同样重要。guard cluases 告诉读者 ,“这种情况很罕见,如果真的发生,执行别要的处理后退出”。
6.replace conditional witch polymorphism (以动态取代条件语句)
问题:手上有个条件表达式,它根据不同对象类型而选择不同的行为。
将这个条件表达式的每个分支放进一个子类的覆写函函数中,然后将原始函数声明为一个抽象函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值