概念定義#
完備性:
- 指對當前需求所能提供的服務的覆蓋率
架構的目標#
架構是一個比較寬泛的概念
為了某個需求實現的一個或是一系列業務
旨在高效率地解決問題
重構#
重構的本質就是:對目前架構的 完備性 不夠充分而 remake 的
重構軟體,意味著你可能會對某個模組 / 某個應用,甚至是某個系統進行再次覆寫
這種行為一般產生於:
- 原代碼存在大量問題,修復成本巨大
- 原系統性能不足以處理業務的不斷增長情況
- 新功能無法快速接入系統內
- 架構本身存在缺陷
無論是什麼原因,重構肯定是為了解決上一代產品出現的問題
重構無法避免,但是重構的頻率一定要在 == 可控制的範圍內 ==
否則三天一小改,一週一大改 (這樣帶來的時間成本和心智負擔十分巨大)
- 解決問題的最好方法就是解決出現問題的根源
試想一個情景:
你為某 API(假定是一個天氣接口,數據有溫度 / 濕度 / 變化情況 / 地區)實現了封裝
而你認為目前不需要濕度這一參數,則可能會直接丟棄濕度這一數據
當你某天自己實現的功能需要依賴濕度這一參數時,你要麼直接從原代碼中補上濕度(這無疑是增加心智負擔,尤其是代碼在一個系統中),要麼就是實現一個新的封裝來獲取這一參數
上面的兩種方法,都会讓系統變得更加 複雜
那麼如果一開始,你將參數保存在封裝的內部(向外輸出的數據仍沒有濕度),而不是直接丟棄,那麼實現新的功能時,只需要調用該 API 拿到濕度參數即可!
- 以上例子顯示了一個比較容易出現的情況,與其丟棄數據,不如直接封裝在內部供下次使用
- 當然可能會消耗更多的計算資源和帶寬(對於穩定性和開發成本來說,這並不是太大,不是嗎?)
生活中的實例#
就拿 B 站作為例子,其 Web 端 API 接口中存在多個看起來 "無用" 的參數和重複項(比如 bvid 和 bv_id)
這就是以兼容性換取開發的遍歷,用 bvid 和 bv_id 可以減少混淆所帶來的 隱式問題 和溝通成本