m.a. jackson曾寫道:「軟體工程師的智慧型,就在於他們是否開始意識到:使程式能用和使程式正確,這兩者之間有什麼樣的差別。」
墨菲定律(murphy's law)這樣說道:「凡是可能出錯的事,準會出錯。」
隨著你編寫越來越多的**,以及隨著你越來越快地編寫**,犯錯的機率也將不斷增加。
關於防禦性程式設計,有一些常見的誤解。防禦性程式設計並不是:
檢查錯誤
如果**中存在可能出現錯誤的情況,無論如何你都應該檢查這些錯誤。這並不是防禦性編碼。它只是一種好的做法,是編寫正確**的一部分。
測試 測試你的**並不是防禦,而只是開發工作的另乙個典型部分。測試工作不是防禦性的,這項工作可以驗證**現在是正確的,但不能保證**在經歷將來的修改之後不會出錯。即便是擁有了世界上最好的測試工具,也還是會有人對**進行更改,並使**進入過去未測試的狀態。
除錯 在除錯期間,你可以新增一些防禦性**,不過除錯是在程式出錯之後進行的。防禦性程式設計首先是「防止」程式出錯的措施(或在錯誤以不可理解的方式出現之前發現它們,不然就需要整夜的除錯)。
下面這些情況可能是給你帶來麻煩的原因:
— 真正的使用者 意外地提供了假的輸入,或者錯誤地操作了程式;
— 惡意的使用者 故意造成不好的程式行為;
— 客戶端** 使用錯誤的引數呼叫了你的函式,或者提供了不一致的輸入;
— 執行環境 沒有為程式提供足夠的服務;
— 外部程式庫 執行失誤,不遵從你所依賴的介面協議。
編碼的目標是清晰,而不是簡潔
關鍵概念 簡單就是一種美。不要讓你的**過於複雜。
12:33:08, 星期二 30. 九月 2008 看到 1.6章
《程式設計匠藝》讀書筆記
程式設計匠藝 讀書筆記之一 程式設計匠藝 讀書筆記之二 程式設計匠藝 讀書筆記之三 程式設計匠藝 讀書筆記之四 程式設計匠藝 讀書筆記之五 程式設計匠藝 讀書筆記之六 程式設計匠藝 讀書筆記之七 程式設計匠藝 讀書筆記之八 程式設計匠藝 讀書筆記之九 程式設計匠藝 讀書筆記之十 程式設計匠藝 讀書筆...
《程式設計匠藝》讀書筆記 第四周
這週我讀了 程式設計匠藝 深有感悟。作為乙個初學者,我的程式經常會出現或多或少的編譯和執行上的錯誤,這本書關於處理不可避免的錯誤 中的錯誤情形給出了很詳細的討論。我很喜歡書上引用羅伯特 奧本海默的一句話 避免錯誤的唯一辦法就是找出錯誤,而找出錯誤的唯一辦法就是要有自己提出問題的權利。書中指出,錯誤可...
第一次讀書筆記 《程式設計匠藝》
pb15061303 劉梓軒 這週我讀的書是美國作者pete goodliffe所著的 程式設計匠藝 這是一部比較大部頭的書,我主要瀏覽了前兩章,關於防禦性程式設計 以及源 的版面和樣式的內容。第一章中,作者關於優秀的 和正確的 的論述讓我印象深刻。正確的 不會崩潰,會得到正確的結果,但卻不一定是優...