作爲一個代碼民工,不管你用什麼語言,調試總是不可避免的。
有效的調試可以幫您提高代碼的質量,縮短查找錯誤的時間,而且會減少引入錯誤的機率。
從某種意義上說,調試的技巧甚至比算法的技巧還要寶貴,至少毫不遜色。畢竟,當今社會需要你去發現一個算法,哪怕是實現一個算法的機會並不多,大多數時候只需要遵守已有的步驟,一步一步的完成即可。
但是企業在招聘的時候,往往折服於能在5分鐘內寫出一個算法的能力,而忽略應聘者能在5分鐘內找到一個算法的錯誤的能力。這實際上是不值得提倡的。
這個扯遠了,本文簡要總結代碼大全第23章,調試,的內容。這些調試的技巧很是實用:
- 首先要從代碼的缺陷中學習,理解程序,明確你犯了哪種類型的錯誤,審視自己解決問題的辦法,審視自己修正缺陷的方法,代碼對別的閱讀者友好嗎;
- 應該避免這些調試方法:隨意加print,猜測缺陷出現的位置;不願意去理解問題,用最簡單的方式修改錯誤;
- 科學的調試方法是這樣的:
- 穩定重現,在關鍵位置打印變量,收集數據;
- 構建假說,確定一些可能重現錯誤的輸入;
- 設計試驗來證明或反證假說,試驗最好簡單,易於操作;
- 重複上述步驟,知道你對所有輸入預測的結果跟實際結果吻合。
- 調試方法中有用的技巧,把所有的可能寫在本子上,縮小嫌疑代碼的範圍,對最近的修改保持警惕;
- 修正錯誤的技巧:先理解問題,驗證對錯誤的修改,不要在緊張的狀態下修改,一次只改動一個錯誤,搜索類似的缺陷;
- 克服調試的心理陷阱,人往往被自己欺騙,而忽略了重要的東西,一方面忽略與錯誤無關的代碼有助於快速的找到錯誤,但也意味着另一個可能的結果。在編程時候,採用清晰的代碼,明確的註釋有助於減少這些心理因素的影響。
- 最後,有效的利用工具,注意其報告的信息,也有助於更好的發現錯誤。