2009年1月21日

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

Chapter 4 - Pragmatic Paranoia

You Can't Write Perfect Software

Pragmatic Programmer 不光是不信任別人寫的 code,他們也不信任自己所寫的。所以他們針對自己的錯誤進行防衛性編程。


Section 21: Design by Contract

與人打交道很困難,所以有了合約這種東西,規範雙方的權利和責任。同樣地,與程式打交道也可以用合約 ( DBC ) 以保證其正確性 ( 做的事不多也不少 )。這包含了 precondition ( 調用 routine 時必須滿足的條件 )、postcondition ( routine 保證會做的事,以及完成後對外圍狀態造成的影響 )、class invariant ( class 會確保由調用者的角度來看,某條件總是為真 )。

於是,routine 與 caller 間的合約就是:所有 precondition 成立時,routine 保證所有 postcondition 和 class invariant 為真。


Section 22: Dead Programs Tell No Lies

Crash early. Crash, don't trash. 程式崩掉比起暗地裡搞爆破好的多。


Section 23: Assertive Programming

用 assertion 確保不該發生的事情絕對不會發生。但是它不應該用來:包起必須執行的述句、取代錯誤處理、產生副作用。


Section 24: When to Use Exceptions

Use exceptions for exceptional problems. Exception 應該保留來處理意外事件,否則可能會影響可讀性、可維護性,破壞封裝、增加耦合。


Section 25: How to Balance Resources

Finish what you start. 用像 XHTML 這樣的嵌套次序釋放資源。負責分配資源的東西,也該負責釋放。本節有給出 C++ 和 Java 處理 exception 時釋放資源的範例。

沒有留言:

張貼留言