本書著重討論和日常編程工作息息相關的JavaBug模式。Bug模式是一種非常實用的概念,它能提高用戶檢測和修正代碼錯誤的能力。 本書共分為三個部分:第I部分是有關Bug模式的理論基礎,介紹Bug模式的基本概念及套用這種方法的意義所在:第II部分是對最為常見的13種Bug模式的詳細講解,從中可以學會如何識別、預防這些典型Bug的方法;第III部分通過表格的形式對全書內容進行了總結。
基本介紹
- 中文名:Java Bug模式詳解
- 作者: Eric Allen
- 圖書分類:軟體
- 資源格式:PDF
圖片信息,內容簡介,目錄,
圖片信息
中文名: Java Bug模式詳解
作者: Eric Allen
圖書分類: 軟體
資源格式: PDF
版本: 掃描版
出版社: 清華大學出版社
書號: ISBN:7302074437
發行時間: 2003年11月
地區: 大陸
語言: 簡體中文
內容簡介
本書特點:
● 把軟體開發的調試過程與極限編程方法融為一體
● 對軟體實例進行深層次的剖析
● 為常見的調試問題提供便捷的參考清單
本書適合於希望通過利用Bug模式來提高代碼質量和效率的開發工程師和編程愛好者。 本書是關於電腦程式診斷和調試的方法論,它把調試過程描述為科學方法的一種完美體現。調試是人們容易輕視的一項任務。調試技能完全獨立於其他編程技能,如程式的擴展性設計和軟體重用。
Eric Allen專注於調試的理論,研究調試與軟體開發周期的其他階段的相關性。他特彆強調了單元測試對於實際調試過程的重要性。同時,Allen還指出,雖然測試和調試往往同步執行,但它們卻是截然不同的兩項工作。
本書的第一部分奠定了全書的理論基礎。第二部分詳述在編程過程中會頻繁出現的各種類型的bug模式。對於每一種模式,Allen都對它的特徵、處理方法和預防措施進行了講解。Bug模式出現的頻率越高,被診斷和有效消除的可能性就越大。本書的最後部分為可能出現的問題和解決方案提供了一個參考清單,並為Java開發人員提供了各種資源,包括Web站點、設計工具和參考書目。
● 把軟體開發的調試過程與極限編程方法融為一體
● 對軟體實例進行深層次的剖析
● 為常見的調試問題提供便捷的參考清單
本書適合於希望通過利用Bug模式來提高代碼質量和效率的開發工程師和編程愛好者。 本書是關於電腦程式診斷和調試的方法論,它把調試過程描述為科學方法的一種完美體現。調試是人們容易輕視的一項任務。調試技能完全獨立於其他編程技能,如程式的擴展性設計和軟體重用。
Eric Allen專注於調試的理論,研究調試與軟體開發周期的其他階段的相關性。他特彆強調了單元測試對於實際調試過程的重要性。同時,Allen還指出,雖然測試和調試往往同步執行,但它們卻是截然不同的兩項工作。
本書的第一部分奠定了全書的理論基礎。第二部分詳述在編程過程中會頻繁出現的各種類型的bug模式。對於每一種模式,Allen都對它的特徵、處理方法和預防措施進行了講解。Bug模式出現的頻率越高,被診斷和有效消除的可能性就越大。本書的最後部分為可能出現的問題和解決方案提供了一個參考清單,並為Java開發人員提供了各種資源,包括Web站點、設計工具和參考書目。
目錄
第1章 混亂環境下的靈活方法
1.1 軟體設計.實現和維護的趨勢
1.1.1 對於穩定.安全系統的需求增加
1.1.2 傳統軟體工程技術的局限性
1.1.3 開放原始碼的軟體項目的可利用性
1.1.4 對於跨平台語言的需求
1.2 在快節奏的社會中學習
1.3 bug模式簡述
1.4 小結
第2章 Bug.規範和實現方案
2.1 bug的概念
2.2 一體性規範
2.2.1 C++
2.2.2 Python
2.2.3 ML
2.2.4 Pascal
2.3 規範的好處
2.4 實現方案與規範的差異
2.5 利用素材建立經濟有效的規範
2.5.1 通過測試來排除規範錯誤
2.5.2 單元測試的缺陷
2.6 小結
第3章 調試和開發過程
3.1 將調試當作科學試驗
3.1.1 逐步規範化.整合併發行軟體
3.1.2 在設計上儘可能保持簡單
3.1.3 結對編程
3.1.4 及時的客戶反饋
3.1.5 所有開發人員共享程式代碼
3.1.6 對任何可能產生問題的代碼進行測試
3.2 將調試測試程式併入到單元測試集
3.3 展望:面向測試的語言
3.4 小結
第4章 調試和測試過程
4.1 可測試的設計模式
4.1.1 在模型中而不是視圖中保管代碼
4.1.2 使用靜態類型檢查發現錯誤
4.1.3 使用中介器封裝跨越斷層線的功能
4.1.4 編寫帶有簡短簽名和默認參數的方法
4.1.5 使用不修改記憶體狀態的存取器
4.1.6 通過接口定義程式外組件
4.1.7 優先編寫測試程式
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 健壯性和診斷證據的缺乏
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並非僅出現在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 與作業系統相關的bug
20.2 小結
第21章 診斷清單
21.1 基本概念
21.2 模式清單
第22章 用於調試的設計模式
22.1 最大化靜態類型檢查
22.1.1 儘可能設定final欄位
22.1.2 將不可能被改寫的方法設為fial
22.1.3 包括作為默認值的類
22.1.4 利用已檢查異常確保所有客戶端程式可處理異常情況
22.1.5 定義新的異常類型來精確區分各種異常情況
22.1.6 利用特定State類
22.1.7 將類型轉換和instanceof測試降至最少
22.1.8 使用Singleton設計模式幫助最小化instanceof的使用
22.2 將引入bug的可能降至最低
22.2.1 提取通用代碼
22.2.2 儘可能實現純功能性方法
22.2.3 在構造函式中初始化所有欄位
22.2.4 出現異常情況時立即拋出異常
22.2.5 出現錯誤時立刻報告錯誤訊息
22.2.6 儘早發現錯誤
22.2.7 在代碼中置入斷言
22.2.8 儘可能在用戶可觀察到的狀態下測試代碼
22.3 征程尚未結束
第23章 參考資料
附錄 String-parsing列表構造函式
1.1 軟體設計.實現和維護的趨勢
1.1.1 對於穩定.安全系統的需求增加
1.1.2 傳統軟體工程技術的局限性
1.1.3 開放原始碼的軟體項目的可利用性
1.1.4 對於跨平台語言的需求
1.2 在快節奏的社會中學習
1.3 bug模式簡述
1.4 小結
第2章 Bug.規範和實現方案
2.1 bug的概念
2.2 一體性規範
2.2.1 C++
2.2.2 Python
2.2.3 ML
2.2.4 Pascal
2.3 規範的好處
2.4 實現方案與規範的差異
2.5 利用素材建立經濟有效的規範
2.5.1 通過測試來排除規範錯誤
2.5.2 單元測試的缺陷
2.6 小結
第3章 調試和開發過程
3.1 將調試當作科學試驗
3.1.1 逐步規範化.整合併發行軟體
3.1.2 在設計上儘可能保持簡單
3.1.3 結對編程
3.1.4 及時的客戶反饋
3.1.5 所有開發人員共享程式代碼
3.1.6 對任何可能產生問題的代碼進行測試
3.2 將調試測試程式併入到單元測試集
3.3 展望:面向測試的語言
3.4 小結
第4章 調試和測試過程
4.1 可測試的設計模式
4.1.1 在模型中而不是視圖中保管代碼
4.1.2 使用靜態類型檢查發現錯誤
4.1.3 使用中介器封裝跨越斷層線的功能
4.1.4 編寫帶有簡短簽名和默認參數的方法
4.1.5 使用不修改記憶體狀態的存取器
4.1.6 通過接口定義程式外組件
4.1.7 優先編寫測試程式
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 健壯性和診斷證據的缺乏
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並非僅出現在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 與作業系統相關的bug
20.2 小結
第21章 診斷清單
21.1 基本概念
21.2 模式清單
第22章 用於調試的設計模式
22.1 最大化靜態類型檢查
22.1.1 儘可能設定final欄位
22.1.2 將不可能被改寫的方法設為fial
22.1.3 包括作為默認值的類
22.1.4 利用已檢查異常確保所有客戶端程式可處理異常情況
22.1.5 定義新的異常類型來精確區分各種異常情況
22.1.6 利用特定State類
22.1.7 將類型轉換和instanceof測試降至最少
22.1.8 使用Singleton設計模式幫助最小化instanceof的使用
22.2 將引入bug的可能降至最低
22.2.1 提取通用代碼
22.2.2 儘可能實現純功能性方法
22.2.3 在構造函式中初始化所有欄位
22.2.4 出現異常情況時立即拋出異常
22.2.5 出現錯誤時立刻報告錯誤訊息
22.2.6 儘早發現錯誤
22.2.7 在代碼中置入斷言
22.2.8 儘可能在用戶可觀察到的狀態下測試代碼
22.3 征程尚未結束
第23章 參考資料
附錄 String-parsing列表構造函式