高質量代碼優化!談談重構項目中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的方法,從新初始化(甚至能夠寫一個後臺編輯腳本發佈的功能)
總結
- 架構設計和需求相關,不只要會技術,還必須懂行業,要知道需求在可見的時間裏會變化到什麼程度,而後根據不一樣的程度來給出不一樣的方案
- 不要過分設計:
- 有方案不表明當前必須作,能把設計提早比需求快一步,就很好了
- 學會給本身的代碼分級,是讓本身進步的最好的辦法.一我的的成長分爲幾個階段:
- 面向功能編程
- 面向性能編程
- 面向複用編程
- 面向將來編程
歡迎關注本站公眾號,獲取更多信息