代碼優雅寫法之逆向邏輯

海街日記.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

時刻警戒思惟棧編碼邏輯,優先將其考慮爲一個總體

多重嵌套是有問題的代碼

相關文章
相關標籤/搜索