好不容易這幾天看完,乘著記憶猶新打一下筆記
先說說整體感想,
這是個可以看到很多思考過程的書,而不是條列式列一推優缺點的,也沒甚麼亂憑空喊話。
隨處可見用直接用程式碼跟UML思考(不是輔助用喔!),對我這程式黑手而言好多了。
翻譯也是上上之作,基本上直接靠敘述用中文思考就ok。
內容
- 1,2章:不免俗的還是宣揚一下門派心法及教義。
- 3,4,5章:敏捷開發中耳熟能詳開發方式, Plan, Test, Refactor。
- 6章:兩個人共同寫一個保齡球計分,藉由互相討論慢慢組合出一個程式來,而不是一個人悶著頭寫,可以看得出來Plan, Test, Refactor是慢慢延生出來。說實話,這種互動對我而言是一個很妙的體驗,而且居然能產生出個還挺精美的程式,跟中間思考過程比起,我想對於搭擋編程的認識或許是更重要。
- 7章:嗅出程式那裏會壞掉。
- 8. SRP: 類別改變的原因只有一個。
- 9. OCP: 可對外擴充並對內部修改封閉,但要決定封閉跟擴充那些東西是很困難的,這要來自抽象化慨念本身的合理性,抗拒草率的抽象畫跟抽象化本身一樣重要。
- 10. Liskov代換:子類別必須可以替換他們的父類別。
- 11. DIP:高階與低階應依賴於同一抽象概念,實做細節要依賴抽象。
- 12. ISP:介面必須切割成它應該做的事,也就是內聚力。
- 13~17章:薪資系統,主要有一些簡化靜態結構的Patterns,像Command, Singleton, NullObject之類的。
- 17~19章:思考如何修改或擴充系統,也是前面的幾個Pattern的真正延伸,我覺得這邊也很棒,而不像有些書只說Pattern好,也不知道好在哪...orz。
- 20~22章:用測量方式量化依賴度跟穩定度,過程大略還懂,不過真的要自己做就沒法度了。
- 23~27章:氣象台研究,複雜的互動,處理不同版本差異,外部Library處理的Patterns應用。
- 28~30章:教育訓練系統,只看懂用Vistor做報表...囧。
- 個人及互動勝過流程與工具
- 可用的軟體勝過詳盡的文件