| 价格 | ¥79.00 |
| 发货 | 广东东莞市 |
| 数量 | -+ |
| 库存 | 100本 |
理解修改软件的机制:添加特性、修正缺陷、改进设计、优化性能
把遗留代码放到测试用具之中
编写测试,防止引入新的问题
包含Java、C++、C和C#的示例,其中介绍的大多数技术适用于其他任何语言或平台
地确定要在哪些地方修改代码
处理非面向对象的遗留代码
处理看起来没有任何结构的应用程序
目 录
译者序
序
前言
第一部分 修改机制
第1章 修改软件 2
1.1 修改软件的四大原因 2
1.1.1 增加特性和修正缺陷 2
1.1.2 改善设计 4
1.1.3 优化 4
1.2 组合在一起 4
第2章 利用反馈 7
2.1 什么是单元测试 9
2.2 高层次测试 11
2.3 测试覆盖 11
2.4 遗留代码修改方法 14
2.4.1 确定变更点 14
2.4.2 找到测试点 14
2.4.3 打破依赖关系 14
2.4.4 编写测试 15
2.4.5 做出修改并重构 15
2.5 本书其他部分 15
第3章 感知和分离 16
3.1 伪协作程序 17
3.1.1 伪对象 17
3.1.2 伪对象的两面 20
3.1.3 伪对象总结 20
3.1.4 模拟对象 21
第4章 接缝模型 22
4.1 大片的文本 22
4.2 接缝 23
4.3 接缝类型 25
4.3.1 预处理接缝 26
4.3.2 链接接缝 28
4.3.3 对象接缝 31
第5章 工具 36
5.1 自动化重构工具 36
5.2 模拟对象 38
5.3 单元测试用具 38
5.3.1 JUnit 39
5.3.2 CppUnitLite 40
5.3.3 NUnit 41
5.3.4 其他xUnit框架 42
5.4 一般测试用具 42
5.4.1 集成测试框架(framework for Integrated Test,FIT) 42
5.4.2 Fitnesse 43
第二部分 修改软件
第6章 时间很紧张,但还需要修改 46
6.1 新生方法(Sprout Method) 48
6.2 新生类(Sprout Class) 50
6.3 包装方法 54
6.4 包装类 57
6.5 小结 61
第7章 永远都无法完成的修改 62
7.1 理解 62
7.2 延迟时间 63
7.3 打破依赖关系 63
7.4 构建依赖关系 64
7.5 小结 67
第8章 如何添加新特性 68
8.1 测试驱动开发 68
8.1.1 编写失败的测试案例 69
8.1.2 对其进行编译 69
8.1.3 使其通过 69
8.1.4 去除重复的内容 70
8.1.5 编写失败的测试案例 70
8.1.6 对其进行编译 70
8.1.7 使其通过 71
8.1.8 去除重复的内容 71
8.1.9 编写失败的测试案例 71
8.1.10 对其进行编译 71
8.1.11 使其通过 72
8.1.12 去除重复的内容 73
8.2 根据差异编程 74
8.3 小结 81
第9章 无法把类放到测试用具中 82
9.1 恼人的参数 82
9.2 具有隐藏依赖的情况 88
9.3 构造Blob的情况 90
9.4 恼人的全局依赖 92
9.5 可怕的Include依赖 99
9.6 洋葱皮参数 102
9.7 别名参数 104
第10章 无法在测试用具中运行方法 107
10.1 隐藏方法的情况 107
10.2 “有帮助的”语言特性 110
10.3 检测不到的副作用 112
第11章 我需要修改代码,应该测试哪些方法 119
11.1 推断影响 119
11.2 正向推理 124
11.3 影响传播 128
11.4 推理影响的工具 129
11.5 从影响分析中学习 131
11.6 简化影响草图 132
第12章 我需要在一个地方做多处变更,需要为所有涉及的类打破依赖关系吗 134
12.1 拦截点 135
12.1.1 简单的情况 135
12.1.2 更高层次的拦截点 137
12.2 使用夹点来判断设计 140
12.3 夹点陷阱 141
第13章 我需要修改代码,但不知道要编