图书介绍
修改代码的艺术【2025|PDF下载-Epub版本|mobi电子书|kindle百度云盘下载】

- (美)MichaelC·Feathers著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111466253
- 出版时间:2014
- 标注页数:312页
- 文件大小:42MB
- 文件页数:330页
- 主题词:软件开发
PDF下载
下载说明
修改代码的艺术PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 修改机制2
第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 JUnit39
5.3.2 CppUnitLite40
5.3.3 NUnit41
5.3.4 其他xUnit框架42
5.4 一般测试用具42
5.4.1 集成测试框架(Framework for Integrated Test,FIT)42
5.4.2 Fitnesse43
第二部分 修改软件46
第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章 我需要修改代码,但不知道要编写哪些测试142
13.1 鉴定测试142
13.2 鉴定类145
13.3 定向测试(Targeted Testing)146
13.4 编写鉴定测试的启示150
第14章 对库的依赖让我快要崩溃了151
第15章 应用全是API调用153
第16章 对代码理解不够,所以无法修改160
16.1 做笔记,画草图160
16.2 列表标记161
16.2.1 分离职责162
16.2.2 理解方法结构162
16.2.3 提取方法162
16.2.4 理解变更的影响162
16.3 临时重构162
16.4 删除没有用的代码163
第17章 应用没有结构164
17.1 讲述系统的故事165
17.2 裸CRC167
17.3 对话审查(Conversation Scrutiny)170
第18章 测试代码挡路了171
18.1 类命名规范171
18.2 测试位置172
第19章 项目并非面向对象,如何才能够安全地修改174
19.1 简单的案例174
19.2 困难的案例175
19.3 增加新行为178
19.4 充分利用面向对象180
19.5 完全面向对象183
第20章 类太大了,我不想让它继续膨胀186
20.1 查看职责188
20.2 其他技术199
20.3 继续前进199
20.3.1 策略199
20.3.2 战术200
20.4 提取类之后201
第21章 在各个地方修改的都是同样的代码202
第22章 我需要修改一个巨兽方法,但无法为其编写测试218
22.1 巨兽的种类218
22.1.1 无序方法218
22.1.2 缠结的方法219
22.2 使用自动重构支持来对付巨兽221
22.3 手动重构挑战224
22.3.1 引入检测变量224
22.3.2 提取你所知道的内容227
22.3.3 收集依赖228
22.3.4 打破方法对象229
22.4 策略229
22.4.1 记下方法的概要230
22.4.2 找到序列230
22.4.3 首先提取到当前类231
22.4.4 提取小段代码231
22.4.5 准备好重做提取231
第23章 如何知道没有造成任何破坏232
23.1 超感编辑(Hyperaware Editing)232
23.2 单一目标编辑233
23.3 保留签名234
23.4 依赖于编译器236
23.5 结对编程238
第24章 我要崩溃了,它不会再有任何改进239
第三部分 打破依赖的技术242
第25章 打破依赖的技术242
25.1 调整参数242
25.2 分解方法对象245
25.3 完善定义251
25.4 封装全局引用252
25.5 暴露静态方法257
25.6 提取并重写调用259
25.7 提取并重写工厂方法261
25.8 提取并重写getter方法262
25.9 提取实现器265
25.10 提取接口269
25.11 引入实例委托器274
25.12 引入静态设置器275
25.13 链接替换280
25.14 参数化构造函数280
25.15 参数化方法284
25.16 原始化参数(Primitivize Parameter)285
25.17 上推特性287
25.18 下推依赖290
25.19 使用函数指针替换函数293
25.20 使用getter方法替换全局引用295
25.21 创建子类并重写方法297
25.22 替代实例变量299
25.23 模板重定义302
25.24 文本重定义305
附录 重构307
术语表311
热门推荐
- 1560724.html
- 1755046.html
- 1126276.html
- 3629690.html
- 3603542.html
- 2290736.html
- 3057444.html
- 3155038.html
- 627916.html
- 2165569.html
- http://www.ickdjs.cc/book_1234072.html
- http://www.ickdjs.cc/book_3670028.html
- http://www.ickdjs.cc/book_2395944.html
- http://www.ickdjs.cc/book_1406532.html
- http://www.ickdjs.cc/book_1017749.html
- http://www.ickdjs.cc/book_526586.html
- http://www.ickdjs.cc/book_364864.html
- http://www.ickdjs.cc/book_3236174.html
- http://www.ickdjs.cc/book_1431397.html
- http://www.ickdjs.cc/book_3191242.html