《Java Bug模式详解》PDF下载

  • 购买积分:9 如何计算积分?
  • 作  者:(美)艾伦(EricAllen)著;王蕾译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2003
  • ISBN:7302074437
  • 页数:186 页
图书介绍:本书介绍Bug模式的理论基础,结合使用调试技术和极限编程方法,深入剖析实际代码中的各种Bug模式,提供方便易用的检索列表。

第1章 混乱环境下的灵活方法 1

1.1 软件设计、实现和维护的趋势 1

1.1.1 对于稳定、安全系统的需求增加 1

1.1.2 传统软件工程技术的局限性 2

1.1.3 开放源代码的软件项目的可利用性 3

1.1.4 对于跨平台语言的需求 3

1.2 在快节奏的社会中学习 3

1.3 bug模式简述 4

1.4 小结 5

2.1 bug的概念 6

第2章 Bug、规范和实现方案 6

2.2 一体性规范 7

2.2.1 C++ 7

2.2.2 Python 8

2.2.3 ML 8

2.2.4 Pascal 8

2.3 规范的好处 9

2.4 实现方案与规范的差异 10

2.5 利用素材建立经济有效的规范 11

2.5.1 通过测试来排除规范错误 12

2.6 小结 19

2.5.2 单元测试的缺陷 19

第3章 调试和开发过程 21

3.1 将调试当作科学试验 21

3.1.1 逐步规范化、整合并发行软件 21

3.1.2 在设计上尽可能保持简单 22

3.1.3 结对编程 22

3.1.4 及时的客户反馈 23

3.1.5 所有开发人员共享程序代码 23

3.1.6 对任何可能产生问题的代码进行测试 24

3.2 将调试测试程序并入到单元测试集 24

3.3 展望:面向测试的语言 25

3.4 小结 26

第4章 调试和测试过程 27

4.1 可测试的设计模式 27

4.1.1 在模型中而不是视图中保管代码 28

4.1.2 使用静态类型检查发现错误 28

4.1.3 使用中介器封装跨越断层线的功能 29

4.1.4 编写带有简短签名和默认参数的方法 29

4.1.5 使用不修改内存状态的存取器 30

4.1.6 通过接口定义程序外组件 30

4.1.7 优先编写测试程序 30

4.2 GlobalModel接口 31

4.3 小结 37

第5章 科学的调试方法 38

5.1 软件是永不磨损的机器 38

5.1.1 软件有多重 39

5.1.2 小异常引起大问题 40

5.2 Bug模式可以加快诊断bug的速度 41

5.3 小结 42

第6章 关于bug模式 44

6.1 了解bug模式的重要性 44

6.2 选择bug模式的原因 44

6.4 Bug诊断的快速参考 45

6.3 如何组织bug模式 45

第7章 Rogue Tile模式 50

7.1 Rogue Tile bug模式简述 50

7.1.1 症状 51

7.1.2 起因、解决方法和预防措施 51

7.2 提取代码的其他障碍 57

7.2.1 通用类型 57

7.2.2 面向方面的编程技术 59

7.3 小结 59

8.2 难以捉摸的空指针 61

第8章 随处可见的空指针 61

8.1 空指针异常不提供任何信息 61

第9章 Dangling Composite模式 63

9.1 Dangling Composite bug模式简述 63

9.1.1 症状 64

9.1.2 起因 64

9.1.3 解决方法和预防措施 68

9.2 小结 71

10.1 Null Flag bug模式简述 73

10.1.1 症状 73

第10章 Null Flag模式 73

10.1.2 起因 74

10.1.3 解决方法和预防措施 75

10.2 健壮性和诊断证据的缺乏 76

10.2.1 在更好的位置处理异常 77

10.2.2 处理老式代码 77

10.3 小结 77

第11章 Double Descent模式 79

11.1 Double Descent bug模式简述 79

11.1.1 症状 81

11.1.5 真正的修正方法 82

11.1.4 快速但不完善的修正方法 82

11.1.2 起因 82

11.1.3 解决方法和预防措施 82

11.2 小结 84

第12章 Liar View模式 86

12.1 Liar View bug模式简述 86

12.1.1 症状 87

12.1.2 起因 87

12.1.3 解决方法和预防措施 90

12.2 Liars并非仅出现在GUI程序 94

12.3 小结 95

13.1 Saboteur Data bug模式简述 96

第13章 Saboteur Data模式 96

13.1.1 症状 97

13.1.2 语法原因 97

13.1.3 语义原因 98

13.1.4 解决办法和预防措施 99

13.2 小结 100

第14章 Broken Dispatch模式 102

14.1 Broken Dispatch bug简述 103

14.1.1 症状 103

14.1.2 起因 106

14.1.3 解决方法和预防措施 107

14.2 小结 108

第15章 Impostor Type模式 109

15.1 Impostor Type bug模式简述 109

15.1.1 症状 110

15.1.2 起因 111

15.1.3 解决方法和预防措施 111

15.2 混合模式 113

15.3 小结 114

第16章 Split Cleaner模式 116

16.1 Split Cleaner bug模式简述 116

16.1.1 症状 118

16.1.2 起因 119

16.1.3 解决方法和预防措施 119

16.2 小结 121

第17章 Fictitious Implementation模式 122

17.1 Fictitious Implementation bug模式简述 122

17.1.1 症状 123

17.1.2 起因 123

17.1.3 检测Fictitious Implementation 123

17.1.4 解决方法和预防措施 124

17.2 小结 127

18.1 Orphaned Thread bug模式简述 129

第18章 Orphaned Thread模式 129

18.1.1 症状 131

18.1.2 起因 131

18.1.3 解决方法和预防措施 131

18.2 Orphaned Thread和GUI 134

18.3 小结 135

第19章 Run-on Initializatier模式 137

19.1 Run-on Initializatier bug模式简述 137

19.1.1 症状和起因 137

19.1.2 解决方法和预防措施 139

19.2 修正bug 146

19.3 小结 147

第20章 Platform-Dependent模式 148

20.1 Platform-Dependent bug模式简述 148

20.1.1 与供应商相关的bug 149

20.1.2 与版本相关的bug 150

20.1.3 与操作系统相关的bug 151

20.2 小结 152

第21章 诊断清单 154

21.1 基本概念 154

21.2 模式清单 155

22.1 最大化静态类型检查 161

第22章 用于调试的设计模式 161

22.1.1 尽可能设置final字段 162

22.1.2 将不可能被改写的方法设为final 162

22.1.3 包括作为默认值的类 163

22.1.4 利用已检查异常确保所有客户端程序可处理异常情况 163

22.1.5 定义新的异常类型来精确区分各种异常情况 164

22.1.6 利用特定State类 164

22.1.7 将类型转换和instanceof测试降至最少 164

22.1.8 使用Singleton设计模式帮助最小化instanceof的使用 165

22.2 将引入bug的可能降至最低 165

22.2.2 尽可能实现纯功能性方法 166

22.2.1 提取通用代码 166

22.2.3 在构造函数中初始化所有字段 167

22.2.4 出现异常情况时立即抛出异常 167

22.2.5 出现错误时立刻报告错误消息 167

22.2.6 尽早发现错误 167

22.2.7 在代码中置入断言 167

22.2.8 尽可能在用户可观察到的状态下测试代码 168

22.3 征程尚未结束 168

第23章 参考资料 169

附录 String-parsing列表构造函数 175

术语表 182