高質量代碼優化!談談重構項目中if-else代碼的幾點建議

switch

  • if - else只適合在3層以內使用
  • 當條件判斷較多時,能夠首先考慮使用switch

interface

  • 當判斷條件還可能動態增長時,能夠考慮將switch進一步優化,引入接口interface,將代碼與數據分離:
    • 建立一個map:
      • key: switch的case值
      • value: 對應的實體類
    • 抽象出通用方法,變成一個接口,統一入參和返回值
    • 主實現類controller類就是將type值傳進去,獲取到對應的實現類,而後調用抽象出來的方法,這樣不管增長多少個case, 都不會改變主邏輯代碼
    • 每一個類單獨實現接口,互不影響

db setting

  • db setting表的方式加載type對應的實體類
  • 這樣作到了配置數據化
  • 若是case中的實現類須要動態變化呢?
  • 解決方案:case的實現用動態語言完成,而且將代碼寫在db
    • db裏保存的是代碼
    • 啓動的時候初始化全部的實現類,以節省時間
    • 主實現類controller類裏主邏輯代碼不變,但額外提供一個初始化map的方法
    • 若是須要新增的case和實現類,修改db,調用更新map的方法,從新初始化(甚至能夠寫一個後臺編輯腳本發佈的功能)

總結

  • 架構設計和需求相關,不只要會技術,還必須懂行業,要知道需求在可見的時間裏會變化到什麼程度,而後根據不一樣的程度來給出不一樣的方案
  • 不要過分設計:
    • 有方案不表明當前必須作,能把設計提早比需求快一步,就很好了
  • 學會給本身的代碼分級,是讓本身進步的最好的辦法.一我的的成長分爲幾個階段:
    • 面向功能編程
    • 面向性能編程
    • 面向複用編程
    • 面向將來編程
相關文章
相關標籤/搜索