第二章的讀書筆記。
Chapter 2 - A Pragmatic Approach
Section 7: The Evils of Duplication
Maintenance 是件持續伴隨著開發過程的例行事務。想讓開發、維護、理解都更容易的話,秉持 DRY 原則:Don't Repeat Yourself. 並且 Make it easy to reuse.
Section 8: Orthogonality
( 本節開頭給的關於直昇機操控相依性的例子,實在激生動...... )
正交系統中,某個區域的改變不會影響其它地方。這與 DRY 習習相關。設計 self-contained 的組件,以讓事物間不會相互依賴、影響。正交系統可以增加生產力 ( local fix、reuse ) 並降低風險 ( 模組化了 )。
如何讓 code 保持正交性?建構 decoupled 組件 + 避免 global data + 避免寫出相似的函式 ( DRY )。
Section 9: Reversibility
你很難在一開始就做出最正確的決策,且決策很可能一而再再而三地更改。保持 code 的 modularity + flexibility + portability,並致力讓東西在該滾蛋時能輕易地滾蛋。
Section 10. Tracer Bullets
如何在黑暗的戰場上 以正確的方向和仰角 確實地擊中目標?可以把一堆環境因素丟進電腦求解,或是試射曳光彈並視著彈點修改下次射擊。曳光彈與實彈共享現實的狀況,比起模擬求解更加貼近現實。
Prototyping 是用過即丟的 code,而曳光彈最終將成為整體系統骨架中簡約而完整的一部份。
Section 11: Prototypes and Post-it Notes
Prototype 是目標項目的概略模型,可用來測試特定的 aspect,及早找出潛在問題。製作 prototype 是為得從中得到經驗,以讓之後架構實際項目時能有更佳的基礎。
Section 12: Domain Languages
The limits of language are the limits of one's world. --Ludwig Von Wittgenstein
建立並使用與當前項目相關的小型語言。
Section 13: Estimating
Estimate to avoid surprises.
步驟:瞭解問題 → 建立模型 → 拆分組件 → 代入參數 → 運算求解。給出的估量單位會影響別人對此的精準感。
沒有留言:
張貼留言