yimoEx

yimoEx

none

軟體架構的一些心得 - 重構篇

概念定義#

完備性

  • 指對當前需求所能提供的服務的覆蓋率

架構的目標#

架構是一個比較寬泛的概念
為了某個需求實現的一個或是一系列業務
旨在高效率地解決問題

重構#

重構的本質就是:對目前架構的 完備性 不夠充分而 remake 的

重構軟體,意味著你可能會對某個模組 / 某個應用,甚至是某個系統進行再次覆寫
這種行為一般產生於:

  • 原代碼存在大量問題,修復成本巨大
  • 原系統性能不足以處理業務的不斷增長情況
  • 新功能無法快速接入系統內
  • 架構本身存在缺陷

無論是什麼原因,重構肯定是為了解決上一代產品出現的問題
重構無法避免,但是重構的頻率一定要在 == 可控制的範圍內 ==
否則三天一小改,一週一大改 (這樣帶來的時間成本和心智負擔十分巨大)

  • 解決問題的最好方法就是解決出現問題的根源
    試想一個情景:

你為某 API(假定是一個天氣接口,數據有溫度 / 濕度 / 變化情況 / 地區)實現了封裝
而你認為目前不需要濕度這一參數,則可能會直接丟棄濕度這一數據
當你某天自己實現的功能需要依賴濕度這一參數時,你要麼直接從原代碼中補上濕度(這無疑是增加心智負擔,尤其是代碼在一個系統中),要麼就是實現一個新的封裝來獲取這一參數
上面的兩種方法,都会讓系統變得更加 複雜
那麼如果一開始,你將參數保存在封裝的內部(向外輸出的數據仍沒有濕度),而不是直接丟棄,那麼實現新的功能時,只需要調用該 API 拿到濕度參數即可!

  • 以上例子顯示了一個比較容易出現的情況,與其丟棄數據,不如直接封裝在內部供下次使用
  • 當然可能會消耗更多的計算資源和帶寬(對於穩定性和開發成本來說,這並不是太大,不是嗎?)
生活中的實例#

就拿 B 站作為例子,其 Web 端 API 接口中存在多個看起來 "無用" 的參數和重複項(比如 bvid 和 bv_id)
這就是以兼容性換取開發的遍歷,用 bvid 和 bv_id 可以減少混淆所帶來的 隱式問題 和溝通成本

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。