《代碼大全》筆記 08 - 防禦式編程

豆瓣:https://book.douban.com/subject/1477390/

《Code Complete》2d ed,CC2

  • 在防禦式駕駛中要建立這樣一種思維,那就是你永遠也不能確定另一位司機將要做什麼。你要承擔起保護自己的責任,哪怕是其他司機犯的錯誤。

保護程序免遭非法輸入數據的破壞

  • 要做到“垃圾進,什麼都不出”、“垃圾進來,出去是錯誤提示”或“不許垃圾進來”。

斷言

  • 用錯誤處理代碼來處理預期會發生的狀況,用斷言來處理絕不應該發生的狀況。
  • 避免把需要執行的代碼放到斷言中。

  • 用斷言來註解並驗證前條件和後條件。確保調用子程序前的條件和調用後的結果。

  • 斷言在發佈的產品中關閉,必要時在斷言後補充錯誤處理。

錯誤處理技術

  • 返回中立值。默認的異常結果。
  • 換用下一個正確的數據。

  • 返回與前次相同的結果。

  • 換用最接近的合法值。

  • 記錄異常到日誌。返回自定義錯誤碼。

  • 調用統一的錯誤處理子程序。

  • 關閉程序。

異常

  • 異常是把代碼中的錯誤或異常事件傳遞給調用方的一種特殊手段。
  • 異常用於報告發生了不可忽略的錯誤。

  • 在真正例外的情況拋出異常,能預期能處理的當場處理完畢。

  • 不能用異常來推卸責任。

  • 避免在構造和析構函數中向上層拋出異常。

  • 拋出的異常注意其抽象層次與當前子程序一致。

隔離程序,使之包容由錯誤造成的損害

  • 加入中間處理層,清洗外部進入的異常數據。內部就可以從容使用斷言和異常機制。

輔助調試的代碼

  • 開發期間犧牲一些速度和對資源的使用,換取可以讓開發更順暢的內置工具。
  • 進攻式編程(Offensive Programming)。專門應用於開發階段,加速暴露錯誤的發生,促進處理解決。

覈對表

2020-01-01 - 廖傑良

發佈了99 篇原創文章 · 獲贊 64 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章