面试官:代码中出现大量的if/else,需要优化,你有什么好方案?

作者:jcmp      发布时间:2021-05-19      浏览量:0
每晚10点,捕获技术思考和创业资源洞察、

每晚10点,捕获技术思考和创业资源洞察、分享职场生活、职场攻略、领导同事相处技巧和创业资源。

1、文|洪生鹏

if else作为每种编程语言都不可或缺的条件语句,在编程时会大量被使用。但要是稍微不注意,就会在开发过程中出现大量if else的场景,有的嵌套七八个,甚至更多,很显然这样的代码非常不优雅,可读性也不是很好,后期维护难度也大大提高。

有的时候,为了方便,我们在程序中会有很多分支,每个分支下面的代码又有一些相对应的逻辑,相信大多数人倾向用 if-else/switch-case 去实现。有的干脆直接把实现的代码放在 if-else/switch-case 的分支之下,譬如这样:

毋庸置疑,这样的代码不仅冗长,读起来也很吃力。稍微做得好一点的会把这些逻辑封装成函数然后在分支中调用,类似这样:

即使这样比起第一种相对清晰些,但严格来说,这种也是面向过程思维的编程,没有涉及到设计模式。违背开闭原则,而且随着 switch-case 分支的增多,代码也会越来越冗长。

消除出现大量的if else,其实已经有成熟的模式去消除诸多的 if-else/switch-case 分支的方案了。

譬如策略模式,工厂模式、枚举单例模式。将else代码放在函数前面,尽早返回。譬如。

if(condition){ //do something }else{ //do something }

2、建议直接:

if(!condition){ //do something }

当 if-else/switch-case 的分支超过三个、且分支代码相似且冗长的情况下我们尝试考虑使用设计模式,避免重复的搬砖。时间是宝贵,应该用在刀刃上,不应该都花在这if else上。

3、不知对此你是怎么看待的,欢迎交流!