出版社:人民邮电出版社
年代:2007
定价:49.0
修改代码是每一位软件开发人员不可或缺的日常工作。开发人员常常面对的现实是,即便是最训练有素的开发团队也会写出混乱的代码,而且系统的腐化程度也会日积月累。本书针对大型的、无测试的遗留代码基,提供了从头到尾的方案,让你能够更有效地应付它们,将你的遗留代码基改善得更高性能、更多功能、更好的可靠性和可控性。本书还包括了一组共24项解依赖技术,它们能帮助你单独对付代码中的问题片段,并实现更安全的修改。
第一部分修改机理
第1章修改软件
1.1修改软件的四个起因
1.1.1添加特性和修正bug
1.1.2改善设计
1.1.3优化
1.1.4综合起来
1.2危险的修改
第2章带着反馈工作
2.1什么是单元测试
2.2高层测试
2.3测试覆盖
2.4遗留代码修改算法
2.4.1确定修改点
2.4.2找出测试点
2.4.3解依赖
2.4.4编写测试
2.4.5改动和重构
2.4.6其他内容
第3章感知和分离
3.1伪装成合作者
3.1.1伪对象
3.1.2伪对象的两面性
3.1.3伪对象手法的核心理念
3.1.4仿对象
第4章接缝模型
4.1一大段文本
4.2接缝
4.3接缝类型
4.3.1预处理期接缝
4.3.2连接期接缝
4.3.3对象接缝
第5章工具
5.1自动化重构工具
5.2仿对象
5.3单元测试用具
5.3.1JUnit
5.3.2CppUnitLite
5.3.3NUnit
5.3.4其他xUnit框架
5.4一般测试用具
5.4.1集成测试框架
5.4.2Fitnesse
第二部分修改代码的技术
第6章时间紧迫,但必须修改
6.1新生方法
6.2新生类
6.3外覆方法
6.4外覆类
6.5小结
第7章漫长的修改
7.1理解代码
7.2时滞
7.3解依赖
7.4小结
第8章添加特性
8.1测试驱动开发
8.1.1编写一个失败测试用例
8.1.2让它通过编译
8.1.3让测试通过
8.1.4消除重复
8.1.5编写一个失败测试用例
8.1.6让它通过编译
8.1.7让测试通过
8.1.8消除重复代码
8.1.9编写一个失败测试用例
8.1.10让它通过编译
8.1.11让测试通过
8.1.12消除重复
8.2差异式编程
8.3小结
第9章无法将类放入测试用具中
9.1令人恼火的参数
9.2隐藏依赖
9.3构造块
9.4恼人的全局依赖
9.5可怕的包含依赖
9.6“洋葱”参数
9.7化名参数
第10章无法在测试用具中运行方法
10.1隐藏的方法
10.2“有益的”语言特性
10.3无法探知的副作用
第11章修改时应当测试哪些方法
11.1推测代码修改所产生的影响
11.2前向推测
11.3影响的传播
11.4进行影响推测的工具
11.5从影响分析当中学习
11.6简化影响结构示意图
第12章在同一地进行多处修改,是否应该将相关的所有类都解依赖
12.1拦截点
12.1.1简单的情形
12.1.2高层拦截点
12.2通过汇点来判断设计的好坏
12.3汇点的陷阱
第13章修改时应该怎样写测试
13.1特征测试
13.2刻画类
13.3目标测试
13.4编写特征测试的启发式方法
第14章棘手的库依赖问题
第15章到处都是API调用
第16章对代码的理解不足
16.1注记/草图
16.2清单标注
16.2.1职责分离
16.2.2理解方法结构
16.2.3方法提取
16.2.4理解你的修改产生的影响
16.3草稿式重构
16.4删除不用的代码
第17章应用毫无结构可言
17.1讲述系统的故事
17.2NakedCRC
17.3反省你们的交流或讨论
第18章测试代码碍手碍脚
18.1类命名约定
18.2测试代码放在哪儿
第19章对非面向对象的项目,如何安全地对它进行修改
19.1一个简单的案例
19.2一个棘手的案例
19.3添加新行为
19.4利用面向对象的优势
19.5一切都是面向对象
第20章处理大类
20.1职责识别
20.2其他技术
20.3继续前进
20.3.1战略
20.3.2战术
20.4类提取之后
第21章需要修改大量相同的代码
第22章要修改一个巨型方法,却没法为它编写测试
22.1巨型方法的种类
22.1.1项目列表式方法
22.1.2锯齿状方法
22.2利用自动重构支持来对付巨型方法
22.3手动重构的挑战
22.3.1引入感知变量
22.3.2只提取你所了解的
22.3.3依赖收集
22.3.4分解出方法对象
22.4策略
22.4.1主干提取
22.4.2序列发现
22.4.3优先提取到当前类中
22.4.4小块提取
22.4.5时刻准备重新提取
第23章降低修改的风险
23.1超感编辑
23.2单一目标的编辑
23.3签名保持
23.4依靠编译器
第24章当你感到绝望时
第三部分解依赖技术
第25章解依赖技术
25.1参数适配
25.2分解出方法对象
25.3定义补全
25.4封装全局引用
25.5暴露静态方法
25.6提取并重写调用
25.7提取并重写工厂方法
25.8提取并重写获取方法
25.9实现提取
25.9.1步骤
25.9.2一个更复杂的例子
25.10接口提取
25.11引入实例委托
25.12引入静态设置方法
25.13连接替换
25.14参数化构造函数
25.15数化方法
25.16朴素化参数
25.17特性提升
25.18依赖下推
25.19换函数为函数指针
25.20以获取方法替换全局引用
25.21子类化并重写方法
25.22替换实例变量
25.23模板重定义
25.24文本重定义
附录重构
术语表
索引
本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作,而且从广度和深度上都超过了前两部经典。书中不仅讲述了面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等)与解依赖技术及大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。 修改代码是每一位软件开发人员的日常工作。开发人员常常面对的现实是,即便是最训练有素的开发团队也会写出混乱的代码,而且系统的腐化程度也会日积月累。本书是一部里程碑式的著作,针对大型的、无测试的遗留代码基,提供了从头到尾的方案,让你能够更有效地应付它们,将你的遗留代码基改善得具有更高性能、更多功能、更好的可靠性和可控性。本书还包括了一组共24项解依赖技术,它们能帮助你单独对付代码中的问题片段,并实现更安全的修改。 本书适合各层次软件开发人员、管理人员和测试人员阅读。
书籍详细信息 | |||
书名 | 修改代码的艺术站内查询相似图书 | ||
丛书名 | 图灵程序设计丛书 | ||
9787115163622 如需购买下载《修改代码的艺术》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN | |||
出版地 | 北京 | 出版单位 | 人民邮电出版社 |
版次 | 1版 | 印次 | 1 |
定价(元) | 49.0 | 语种 | 简体中文 |
尺寸 | 26 | 装帧 | 平装 |
页数 | 197 | 印数 |
(美) 费瑟 (Feathers,M.C.) , 著
(美) 戴维·斯科特·伯恩斯坦, 著
(美) 马歇尔 (Marshall,D.) , 等著
(美) 布莱什纳 (Brechner,E.) , 著
(美) 罗森伯格 (Rosenberg,S.) , 著
(美) 罗伯特·C.马丁 (Robert C. Martin) , 著
(美) 马丁 (Martin,R.C.) , 著
(美) 罗伯特·C.马丁 (Robert C. Martin) , 著
(美) 基夫·莫里斯 (Kief Morris) , 著