代码优雅写法之逆向逻辑

海街日记.jpg

扯淡

好的代码 更多的也是为了后期维护,哪怕后期不须要你来维护 ,清晰干爽的代码也会为做者留下好的印象java

而且 在工做团队中 能够施加影响力bash

用逆向逻辑 消灭嵌套

业务场景

乘坐飞机时须要 时间在起飞以前领取登机牌安检 最后 天气事宜飞行 的状况下 才能乘坐飞机起飞post

时间在起飞时间后----> 改签ui

未领取登机牌 ----->在飞机起飞前 领取登机牌编码

未安检 ---->在 飞机起飞前 安检spa

天气事宜飞行 ---> 飞行code

天气不宜飞行 ---> 改签cdn

代码实现 之 瀑布流

if(currentTime() < airplane.startTime() ){
          //时间在有效范围内
        if(boardingPass(user)){
                //拥有登机牌
                if(securityCheck(user)){
                       //安检完成
                        if(haveAGoodDay()){
                                return  //起飞
                          }else{
                               return   //改签
                          }
                  }else{
                       return  //进行安检
                  }
        }else{
               return    //领取登机牌
        }
    }else{
          return   //改签
    }

    看见这样的代码 不知道是否有兴趣在读下去
    这样的代码给人一种逻辑不清晰的感受 虽然逻辑上确实没问题
复制代码

代码优雅写法之封装

将业务信息封装下,逻辑不混乱blog

代码实现之逆向逻辑

if(currentTime() > airplane.startTime()){
        return   //改签
  }

  if(!haveAGoodDay()){
        return  //改签
   }

  if(!boardingPass(user)){
        return    //领取登机牌
   }

  if(!securityCheck(user)){
        return   //安检
   }
   
  return  //起飞
  
  用逆向思惟消灭层层嵌套
  代码中出现屡次嵌套时:
  1. 逻辑不清晰
  2. 逻辑清晰但未将其视为一个业务总体,按照思惟栈的思考编码
  3. 多层嵌套容易出现问题  
复制代码

总结

多重或与并不是的条件下达成的目的业务 不妨尝试下逆向逻辑get

时刻警戒思惟栈编码逻辑,优先将其考虑为一个总体

多重嵌套是有问题的代码

相关文章
相关标签/搜索