第1章 混亂環(huán)境下的靈活方法
1.1 軟件設計.實現(xiàn)和維護的趨勢
1.1.1 對于穩(wěn)定.安全系統(tǒng)的需求增加
1.1.2 傳統(tǒng)軟件工程技術的局限性
1.1.3 開放源代碼的軟件項目的可利用性
1.1.4 對于跨平臺語言的需求
1.2 在快節(jié)奏的社會中學習
1.3 bug模式簡述
1.4 小結
第2章 Bug.規(guī)范和實現(xiàn)方案
2.1 bug的概念
2.2 一體性規(guī)范
2.2.1 C++
2.2.2 Python
2.2.3 ML
2.2.4 Pascal
2.3 規(guī)范的好處
2.4 實現(xiàn)方案與規(guī)范的差異
2.5 利用素材建立經濟有效的規(guī)范
2.5.1 通過測試來排除規(guī)范錯誤
2.5.2 單元測試的缺陷
2.6 小結
第3章 調試和開發(fā)過程
3.1 將調試當作科學試驗
3.1.1 逐步規(guī)范化.整合并發(fā)行軟件
3.1.2 在設計上盡可能保持簡單
3.1.3 結對編程
3.1.4 及時的客戶反饋
3.1.5 所有開發(fā)人員共享程序代碼
3.1.6 對任何可能產生問題的代碼進行測試
3.2 將調試測試程序并入到單元測試集
3.3 展望:面向測試的語言
3.4 小結
第4章 調試和測試過程
4.1 可測試的設計模式
4.1.1 在模型中而不是視圖中保管代碼
4.1.2 使用靜態(tài)類型檢查發(fā)現(xiàn)錯誤
4.1.3 使用中介器封裝跨越斷層線的功能
4.1.4 編寫帶有簡短簽名和默認參數(shù)的方法
4.1.5 使用不修改內存狀態(tài)的存取器
4.1.6 通過接口定義程序外組件
4.1.7 優(yōu)先編寫測試程序
4.2 GlobalModel接口
4.3 小結
第5章 科學的調試方法
5.1 軟件是永不磨損的機器
5.1.1 軟件有多重
5.1.2 小異常引起大問題
5.2 Bug模式可以加快診斷bug的速度
5.3 小結
第6章 關于bug模式
6.1 了解bug模式的重要性
6.2 選擇bug模式的原因
6.3 如何組織bug模式
6.4 Bug診斷的快速參考
第7章 RogueTile模式
7.1 Rogue Tile bug模式簡述
7.1.1 癥狀
7.1.2 起因.解決方法和預防措施
7.2 提取代碼的其他障礙
7.2.1 通用類型
7.2.2 面向方面的編程技術
7.3 小結
第8章 隨處可見的空指針
8.1 空指針異常不提供任何信息
8.2 難以捉摸的空指針
第9章 Dangling Composite模式
9.1 Dangling Composite bug模式簡述
9.1.1 癥狀
9.1.2 起因
9.1.3 解決方法和預防措施
9.2 小結
第10章 Null Flag模式
10.1 Null Flag bug模式簡述
10.1.1 癥狀
10.1.2 起因
10.1.3 解決方法和預防措施
10.2 健壯性和診斷證據(jù)的缺乏
10.2.1 在更好的位置處理異常
10.2.2 處理老式代碼
10.3 小結
第11章 Double Descent模式
11.1 Double Descent bug模式簡述
11.1.1 癥狀
11.1.2 起因
11.1.3 解決方法和預防措施
11.1.4 快速但不完善的修正方法
11.1.5 真正的修正方法
11.2 小結
第12章 Liar View模式
12.1 Liar View bug模式簡述
12.1.1 癥狀
12.1.2 起因
12.1.3 解決方法和預防措施
12.2 Liars并非僅出現(xiàn)在GUI程序
12.3 小結
第13章 Saboteur Data模式
13.1 Saboteur Data bug模式簡述
13.1.1 癥狀
13.1.2 語法原因
13.1.3 語義原因
13.1.4 解決辦法和預防措施
13.2 小結
第14章 Broken Dispatch模式
14.1 Broken Dispatch bug簡述
14.1.1 癥狀
14.1.2 起因
14.1.3 解決方法和預防措施
14.2 小結
第15章 Impostor Type模式
15.1 Impostor Type bug模式簡述
15.1.1 癥狀
15.1.2 起因
15.1.3 解決方法和預防措施
15.2 混合模式
15.3 小結
第16章 Split Cleaner模式
16.1 Split Cleaner bug模式簡述
16.1.1 癥狀
16.1.2 起因
16.1.3 解決方法和預防措施,
16.2 小結
第17章 Fictitious Implementation模式
17.1 Fictitius Implementation bug模式簡述
17.1.1 癥狀
17.1.2 起因
17.1.3 檢測Fictitious Implementation
17.1.4 解決方法和預防措施
17.2 小結
第18章 Orphaned Thread模式
18.1 Orphaned Thread bug模式簡述
18.1.1 癥狀
18.1.2 起因
18.1.3 解決方法和預防措施
18.2 Orphaned Thread和GUI
18.3 小結
第19章 Run-on Initializatier模式
19.1 Run-On lnitializatier bug模式簡述
19.1.1 癥狀和起因
19.1.2 解決方法和預防措施
19.2 修正bug
19.3 小結
第20章 Platform-Dependent模式
20.1 Platform-Dependentbug模式簡述
20.1.1 與供應商相關的bug
20.1.2 與版本相關的bug
20.1.3 與操作系統(tǒng)相關的bug
20.2 小結
第21章 診斷清單
21.1 基本概念
21.2 模式清單
第22章 用于調試的設計模式
22.1 最大化靜態(tài)類型檢查
22.1.1 盡可能設置final字段
22.1.2 將不可能被改寫的方法設為fial
22.1.3 包括作為默認值的類
22.1.4 利用已檢查異常確保所有客戶端程序可處理異常情況
22.1.5 定義新的異常類型來精確區(qū)分各種異常情況
22.1.6 利用特定State類
22.1.7 將類型轉換和instanceof測試降至最少
22.1.8 使用Singleton設計模式幫助最小化instanceof的使用
22.2 將引入bug的可能降至最低
22.2.1 提取通用代碼
22.2.2 盡可能實現(xiàn)純功能性方法
22.2.3 在構造函數(shù)中初始化所有字段
22.2.4 出現(xiàn)異常情況時立即拋出異常
22.2.5 出現(xiàn)錯誤時立刻報告錯誤消息
22.2.6 盡早發(fā)現(xiàn)錯誤
22.2.7 在代碼中置入斷言
22.2.8 盡可能在用戶可觀察到的狀態(tài)下測試代碼
22.3 征程尚未結束
第23章 參考資料
附錄 String-parsing列表構造函數(shù)
術語表