Chapter 5 - Bend, or Break
為了適應瞬息萬變的步伐,盡力讓 code flexible & adaptable 是必要的。
Section 26: Decoupling and the Law of Demeter
去除不必要的依賴關係,將模組間的耦合降至最小。
The Law of Demeter for functions: object 的任何 method 中都只調用這些 method:obj 自身的、parameter obj 的、持有 / 創建的 obj 的。
代價是可能會需要很多的包裝 來將東西承包出去,因而降低性能。箇中取捨,自行評估吧......
Section 27: Metaprogramming
Configure, don't integrate. 讓演算法、容器、資料庫、GUI style 等都可以自由選擇。
Put abstractions in code, details in metadata. ( metadata 如 Windows 中的 .ini 檔。) 這樣一來便可專注於強健的抽象設計、推遲細節處理。讓程式得以在運行中途改變配置,也是一大優點。
要嘛適應,要嘛 as dead as a Dodo. 演化就是這麼一回事。
Section 28: Temporal Coupling
Analyze workflow to improve concurrency. 降低時序依賴,能減少時間耦合。
Section 29: It's Just a View
GUI 中的 MVC ( Model-View-Controller ) 概念:Model 儲存資料本體 / View 負責顯示 / Controller 控制 view 的呈現 ( 像是放大、縮小等操作 )。如此一來可以解除耦合,像是 Qt 的 Model/View programming 就有呈現這樣的概念。
將 MVC 推廣到 GUI 之外:Model 是目標 obj 的抽象數據模型 / View 解釋 model / Controller 控制 view 並可向 model 提供新數據。一種有用的技術是 model-viewer network。
Section 30: Blackboards
共用的黑板讓大家能匿名、非同步地交換訊息,並協調 workflow。
沒有留言:
張貼留言