《程式設計匠藝》讀書筆記 第四周

2022-08-20 16:30:14 字數 1158 閱讀 4439

這週我讀了《程式設計匠藝》,深有感悟。

作為乙個初學者,我的程式經常會出現或多或少的編譯和執行上的錯誤,這本書關於處理不可避免的錯誤——**中的錯誤情形給出了很詳細的討論。我很喜歡書上引用羅伯特·奧本海默的一句話「避免錯誤的唯一辦法就是找出錯誤,而找出錯誤的唯一辦法就是要有自己提出問題的權利。」

書中指出,錯誤可以歸為使用者錯誤、程式設計師錯誤和意外情況三類。使用者錯誤主要體現在錯誤乃至荒謬的輸入和操作。程式設計師錯誤主要體現在**的bug,**中乙個地方的bug常常會導致更多的錯誤在**中其他地方出現,所以要培養防禦性程式設計的意識。而意外情況譬如網路連線失敗,硬碟空間不足等雖然不常見,但也要納入到我們程式設計的考慮範圍之內。

要處理錯誤就要有乙個錯誤報告機制。我有時候覺得乙個函式比較簡單甚至就直接定義為void型別,不判斷它執行的正常與否,這種習慣是很不好的。當我判斷函式是否正常執行時,我常用的方法是錯誤返回-1,正確返回1。但當我的函式要返回資料時,這種方法就不方便了。書中對於這種情況給出了三種方法:其一是返回乙個復合資料型別(比較笨拙且不常用)。其二是通過乙個函式引數返回錯誤**(容易實現,但不美觀也不直觀)。最後是預留一些返回值表示故障(如要返回正數的資料,可用負數來表示出現的各種錯誤型別)。

而處理錯誤則需要搞清楚一些關鍵的問題,其中一些問題是以前我程式設計的時候經常忽略掉的。

其一,處理錯誤需要明白出現錯誤的問題的本質,發生錯誤時操作完成了多少對於搞清楚為什麼出錯是非常有用的。

其二,判斷錯誤的嚴重性是有必要的。有一些嚴重錯誤是無法繞過的,需要優先處理,對錯誤分級處理可以有條理的解決問題,也不至於因為沒有先解決嚴重錯誤而使程式多次崩潰而打擊自己的積極性。最後,除了耐心讀自己的**,通過已有的其他資訊來推斷錯誤**是十分有用的,可以通過編譯器自帶的視窗看一下出錯時各個變數的值是否出錯。這樣可以使處理錯誤更加高效和準確。

最後,我們需要管理自己的錯誤,即要對故障的處理建立乙個一般性的原則,一致的策略。在過去的程式設計中,我程式設計的目的就是為了解決作業中的問題—— 往往只能對於正確的輸入給出正確結果,而對於錯誤輸入的處理非常簡單。我今後需要養成管理錯誤的意識。首先做到不拖延,及時編寫錯誤處理**。其次,要盡可能多的覆蓋錯誤可能性。還要對功能類似的函式的錯誤處理方法有乙個統一的總結,這樣總結以後一段時間以後,寫函式的時候就可以對容易出錯的地方看的更加清晰,考慮錯誤情形可以更加全面,使我的**能慢慢變得強健起來。

《程式設計匠藝》讀書筆記

m.a.jackson曾寫道 軟體工程師的智慧型,就在於他們是否開始意識到 使程式能用和使程式正確,這兩者之間有什麼樣的差別。墨菲定律 murphy s law 這樣說道 凡是可能出錯的事,準會出錯。隨著你編寫越來越多的 以及隨著你越來越快地編寫 犯錯的機率也將不斷增加。關於防禦性程式設計,有一些常...

《程式設計匠藝》讀書筆記

程式設計匠藝 讀書筆記之一 程式設計匠藝 讀書筆記之二 程式設計匠藝 讀書筆記之三 程式設計匠藝 讀書筆記之四 程式設計匠藝 讀書筆記之五 程式設計匠藝 讀書筆記之六 程式設計匠藝 讀書筆記之七 程式設計匠藝 讀書筆記之八 程式設計匠藝 讀書筆記之九 程式設計匠藝 讀書筆記之十 程式設計匠藝 讀書筆...

第一次讀書筆記 《程式設計匠藝》

pb15061303 劉梓軒 這週我讀的書是美國作者pete goodliffe所著的 程式設計匠藝 這是一部比較大部頭的書,我主要瀏覽了前兩章,關於防禦性程式設計 以及源 的版面和樣式的內容。第一章中,作者關於優秀的 和正確的 的論述讓我印象深刻。正確的 不會崩潰,會得到正確的結果,但卻不一定是優...