排查故障是困擾新手程序員的主要問題之一。本書旨在幫助新手程序員消除對代碼錯誤的抵觸情緒,提升解決故障的能力,同時掌握編寫高質量程序的方法。
本書共分為6章,通過漫畫導讀和豐富的示例,生動剖析了新手程序員對代碼錯誤產(chǎn)生抵觸情緒的原因,詳細介紹了錯誤信息的閱讀方法及程序員在編程過程中可能遇到的各種代碼錯誤,直觀講解了高效排查故障的策略、利用工具簡化調試流程的方法、應對復雜代碼故障的技巧,以及編寫易于調試代碼的方法。
更多科學出版社服務,請掃碼獲取。
本科 空間物理學 2011年7月 北京大學
碩士研究生 空間物理學 2014年7月 北京大學
博士研究生 空間物理學 2019年7月 中國科學院大學2019-2022半比特科技(北京)有限公司,CTO
2022-中國科學院地理科學與資源研究所,項目經(jīng)理地球空間信息科學,數(shù)字圖像處理,數(shù)據(jù)分析
目錄
第1章 為什么錯誤信息令人抵觸
1.1 學習如何閱讀錯誤信息 4
1.2 錯誤信息難以閱讀的原因 8
1.2.1 錯誤信息是用英文表述的 8
1.2.2 錯誤信息冗長 14
1.2.3 無法從錯誤信息中找到根本原因 16
1.3 為面對代碼錯誤做好準備 22
1.3.1 放松心態(tài) 22
1.3.2 難解決的代碼錯誤是學習的機會 22
1.3.3 掌握閱讀錯誤信息的技巧23
第2章 高效閱讀錯誤信息的方法
2.1 了解錯誤信息的組成部分 28
2.1.1 錯誤類別 29
2.1.2 錯誤描述 31
2.1.3 堆棧跟蹤 31
2.2 了解錯誤類別41
2.2.1 SyntaxError 42
2.2.2 ReferenceError 43
2.2.3 TypeError 44
2.2.4 RangeError 46
2.2.5 其他編程語言環(huán)境中的錯誤類別 47
第3章 如何高效排查故障
3.1 什么是調試 52
3.2 打印調試 55
3.2.1 使用打印調試解決故障的示例 57
3.2.2 跟蹤代碼路徑排查故障 60
3.3 二分搜索 62
3.3.1 什么是二分搜索62
3.3.2 二分搜索與打印調試相結合 64
3.3.3 確定引發(fā)代碼錯誤的真正位置 69
3.3.4 對大型單元使用二分搜索74
3.4 最小可復現(xiàn)示例 78
3.5 關于提高調試效率的幾點思考 83
3.5.1 事先提出假設 83
3.5.2 每次只驗證一個假設 84
3.5.3 靈活提出并驗證假設 85
3.5.4 不遺余力 85
第4章 利用工具簡化調試
4.1 調試的有力工具—調試器 90
4.2 斷點功能 92
4.2.1 什么是斷點 92
4.2.2 斷點的設置方法93
4.2.3 使用斷點進行調試 96
4.3 單步調試功能 107
4.3.1 單步跳入 107
4.3.2 單步跳過 109
4.3.3 單步跳出 110
4.3.4 單步調試的使用場景 112
4.4 條件斷點功能 113
4.4.1 使用條件斷點進行調試 114
4.4.2 瀏覽器內置條件斷點 117
4.5 監(jiān)視變量功能 118
第5章 如何應對難以解決的代碼故障
5.1 收集信息的技巧 124
5.1.1 使用搜索引擎檢索信息的技巧 124
5.1.2 使用GitHub檢索信息的技巧 127
5.1.3 在社區(qū)提問 131
5.1.4 讀取主要信息 133
5.2 沒有錯誤信息時如何解決故障 136
5.2.1 檢查的位置不正確 136
5.2.2 未檢查錯誤信息的相關輸出配置 138
5.2.3 錯誤被異常處理機制捕獲 140
5.3 如何解決無法復現(xiàn)的故障 142
5.4 生產(chǎn)環(huán)境中的錯誤信息 144
5.4.1 錯誤信息的收集方法 144
5.4.2 日志管理技術的發(fā)展 145
第6章 編寫便于調試的代碼
6.1 避免不必要的重新賦值 152
6.1.1 限制重新賦值的機制 154
6.1.2 限制重新賦值對調試的幫助 154
6.2 盡量縮小變量的作用域 157
6.3 了解單一責任原則 160
6.4 認識和使用純函數(shù) 163
6.4.1 什么是純函數(shù) 163
6.4.2 純函數(shù)和非純函數(shù)的比較 165
6.4.3 如何利用純函數(shù) 167
6.5 編寫類型明確的代碼 168
6.5.1 通過注釋標明類型 169
6.5.2 利用編程語言的特性附加類型信息 170
6.6 編寫有助于調試的測試代碼 173
6.6.1 測試代碼示例 173
6.6.2 測試代碼和調試的關系 175
6.6.3 發(fā)生故障時,編寫測試代碼 176
后記 177