去除if语句

if语句是一个很古老的东西,对我而言,我最早学习的BASIC语言中,就有他的面孔。我相信,任何一门高级语言中一定都会有if语句的存在。当然,它也是一种简单的逻辑结构,非常容易掌握,哪怕对于之哟13岁的孩子来说,也是一样。

关于去除if语句已经不是什么新鲜的话题了。在我学习并掌握面向对象开发的时候,就看过很多的讨论,关于如何用多态特性来消除if语句的。这种机制比较复杂,大体上来说,是一种策略模式的实现。如果你的面对的业务复杂到一定程度上,你就要考虑采用这种方式来实现了。

if语句本身没有什么问题,但是使用很有问题。我认为,简单的条件逻辑下才考虑使用if语句。如果你的业务牵扯需要判断大量的状态,和状态分支,我建议你采用switch语句。虽然说java的switch语句能力比较弱,不能跟SCALA中的模式匹配比较,但是如果和java的枚举结合起来使用,其实也还凑合,至少比if语句要好。switch语句本身其实和if else语句是等价的,这个大家都知道。使用switch语句的另一个好处是,你必须标明状态,因此在别人阅读的时候,就很清晰的可以选择他所需要注意的分支;而使用if语句的话,阅读者可能会在头晕眼花之后放弃你的程序,重写一段自己的逻辑,当然也会以if语句开头(不要说你没有这么干过)。因此if语句的膨胀就是必然的了。最后程序中往往会出现一个巨大的if语句结构,让人望而生畏。

在一段程序中,没有什么比一个多大三五百行的拥有大量分支的if语句更影响阅读的了。毕竟程序是写给人看的。

转载于:https://my.oschina.net/clarkhill/blog/28206

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值