1.瓶頸子程序是加入斷言的絕佳之處,由於它可使咱們用不多的代碼就可以進行很完全的錯誤檢查。
2.
一般,子系統都要對其實現細節進行隱藏,所隱藏的實現細節可能至關複雜。在進行實
現細節隱藏的同時,子系統爲用戶提供了一些關鍵的入口點。程序員經過調用這些關鍵的入
口點來實現同子系統的通信。所以若是在程序中使用這樣的子系統而且在其調用點加上了調
試檢查,那麼不用花很大力氣就能夠進行許多的錯誤檢查。
3.
這裏給出的建議是:當子系統編寫完成以後,要問本身:「程序員什麼狀況下會錯誤地
使用這個子系統,在這個子系統中怎樣才能自動地檢查出這些問題?」
4.
要消除隨機特性─── 使錯誤可再現。例:在消除無定義特性過程當中不能簡單的用0去填充申請的內存,要真正的消除隨機性,防止隱藏錯誤!!
5.
沖掉無用的信息,以避免被錯誤地使用。對於已經釋放的系統內存,出於防止依然有指針錯誤,則將全部有用內存信息覆蓋掉在釋放!!!
6.
用#ifdef 來講明局部變量很難看!
7.
若是某件事甚少發生的話,設法使其常常發生
8.
保存一個日誌,以喚起你的注意,
保存調試信息,以便進行更強的錯誤檢查
9.
創建詳盡的子系統檢查而且常常地進行這些檢查
10.
這就是精心設計子系統測試代碼的好處─── 當測試代碼將錯誤限制在一個局部的
範圍以內後,就經過斷言把錯誤抓住並送到「廣播室」,把正常的工做打斷。對於程序員來
說,這真是再好不過的反饋。
努力作到透明的一致性檢查。
11
.
若是可能的話,把測試代碼放到所編寫的子系統中,而不要把它放到所編寫子系統的外
層。不要等到進行了系統編碼時,才考慮其確認方法。在子系統設計的每一步,都要考
慮「如何對這一實現進行詳盡的確認」這一問題。若是發現這一設計難於測試或者不可
能對其進行測試,那麼要認真地考慮另外一種不一樣的設計,即便這意味着用大小或速度做
代價去換取該系統的測試能力也要這麼作。