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


关注↑↑[爱开发]

每晚10点,捕获技术思考和创业资源洞察

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

本文旨在抛砖引玉,具体实施方案需要自己在实践中动手去尝试,不断尝试,不断改进调优。

 

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

 

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

 switch ( type ) {

         case 1:
          ……
         break;

         case 2:
         ……
         break;

         case 3:
         ……
         break;

         default:
         break;
 }      


 

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

   

  switch(type) {
         case 1:
              fun1();
              break;
         case 2:
              fun2();
              break;
         case 3:
             fun3();
             break;
         default:
             break;
      }


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

 

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


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

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


建议直接:

 if(!condition){
     //do something
  }


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


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


【END】
从《色戒》,看人性的欲望


如果不做程序员,你会选择从事什么职业谋生?


640?wx_fmt=jpeg 分享职场攻略、技术心得和创业资源 更多精彩内容,请长按识别关注

 

喜欢本文,点个[在看],分享给朋友640?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值