1. 程式人生 > 程式設計 >程式碼優雅寫法之逆向邏輯

程式碼優雅寫法之逆向邏輯

海街日記.jpg

扯淡

好的程式碼 更多的也是為了後期維護,哪怕後期不需要你來維護 ,清晰乾爽的程式碼也會為作者留下好的印象

並且 在工作團隊中 可以施加影響力

用逆向邏輯 消滅巢狀

業務場景

乘坐飛機時需要 時間在起飛之前領取登機牌安檢 最後 天氣事宜飛行 的情況下 才能乘坐飛機起飛

時間在起飛時間後----> 改簽

未領取登機牌 ----->在飛機起飛前 領取登機牌

未安檢 ---->在 飛機起飛前 安檢

天氣事宜飛行 ---> 飛行

天氣不宜飛行 ---> 改簽

程式碼實現 之 瀑布流

    if(currentTime() < airplane.startTime() ){
          //時間在有效範圍內
if(boardingPass(user)){ //擁有登機牌 if(securityCheck(user)){ //安檢完成 if(haveAGoodDay()){ return //起飛 }else{ return //改簽 } }else
{ return //進行安檢 } }else{ return //領取登機牌 } }else{ return //改簽 } 看見這樣的程式碼 不知道是否有興趣在讀下去 這樣的程式碼給人一種邏輯不清晰的感覺 雖然邏輯上確實沒問題 複製程式碼

程式碼優雅寫法之封裝

將業務資訊封裝下,邏輯不混亂

程式碼實現之逆向邏輯

  if(currentTime() > airplane.startTime()){
        return
//改簽 } if(!haveAGoodDay()){ return //改簽 } if(!boardingPass(user)){ return //領取登機牌 } if(!securityCheck(user)){ return //安檢 } return //起飛 用逆向思維消滅層層巢狀 程式碼中出現多次巢狀時: 1. 邏輯不清晰 2. 邏輯清晰但未將其視為一個業務整體,按照思維棧的思考編碼 3. 多層巢狀容易出現問題 複製程式碼

總結

多重或與並非的條件下達成的目的業務 不妨嘗試下逆向邏輯

時刻警惕思維棧編碼邏輯,優先將其考慮為一個整體

多重巢狀是有問題的程式碼