2009年1月12日

[讀書筆記] The Pragmatic Programmer (Chapter 2)

第二章的讀書筆記。

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.

步驟:瞭解問題 → 建立模型 → 拆分組件 → 代入參數 → 運算求解。給出的估量單位會影響別人對此的精準感。

沒有留言:

張貼留言