2009年1月25日

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

除夕夜,讓 TPP 陪我過年...... QQ

Chapter 6 - While You Are Coding

Coding 不是機械性的工作;在這過程中必須對決策進行仔細的思考和判斷。


Section 31: Programming by Coincidence

深思熟慮地寫 code,別依賴巧合。瞭解自己在做什麼,照計劃行事,並只依靠可靠的事物。


Section 32: Algorithm Speed

Big-Oh notation: worst-case time.
O(n2): on the order of n2.

Estimate the order of your algorithms. Test your estimates.

特別注意當輸入集很小的時候,某些演算法的開銷可能會比其它簡單演算法的還大。


Section 33: Refactoring

Change and decay in all around I see...
--H. F. Lyte, "Abide With Me"

以園藝來比擬軟體開發。重寫 + 重做 + 重新架構 = 重構。重構就是重新設計。

何時重構?違反 DRY / 非正交設計 / 過時知識 / 性能低落。

它得花費額外的時間來完成,不過早期切除腫瘤總是比較好的。Refactor early, refactor often.


Section 34: Code That's Easy to Test

Design to test. 讓 testability 成為軟體的一環。

Unit testing: testing against contract. 保留單元測試並時常跑它。有些現成的框架可以協助完成。

Test your software, or your users will.


Section 35: Evil Wizards

Don't use wizard code you don't understand. 否則就是在靠巧合編程。確保自己完全瞭解了才用。

沒有留言:

張貼留言