修改代码的艺术pdf高清在线完整电子版|百度网盘下载

编辑评论:

修改代码的艺术还包括一组 24 种依赖关系解析技术,可帮助您隔离有问题的代码片段并实现更安全的修改。修改代码是每个软件开发人员的日常工作。

Snapshot327.png

简介

我们都知道,即​​使是训练有素的开发团队也无法保证始终编写干净高效的代码。如果不积极修改和挽救软件,所有软件都不可避免地会变得复杂、难以理解,并最终随着时间的推移而损坏和恶化。因此,理解和修改已经编写好的代码是每个程序员每天都面临的工作,也是开发程序新功能的基础。然而,修改代码比开发新代码更令人生畏,而且长期缺乏可供参考的文档和资源。

本书是继《重构》和《重构与模式》之后又一本关于修改代码技术的里程碑式书籍,在覆盖面和深度上都超过了前两本经典。本书不仅涵盖面向对象语言(Java、C#、C++)的代码,还有C等过程性语言的章节。作者将了解、测试和修改原理、技术和最新工具(自动重构工具、单元测试框架、mock对象、集成测试框架等)结合实践,很多内容很深入,经常没有发表。本书体现了作者独特的洞察力,以及多年开发和指导软件项目积累的丰富经验和深厚功底。通过这本大作,你不仅可以掌握最前沿的代码修改技术,还可以大大提高你对代码和软件开发的理解。

关于作者

Michael Feathers 是一位世界级的面向对象技术专家,以其丰富的软件项目开发经验而闻名。目前在世界顶级软件咨询公司Object Mentor从事敏捷方法/极限编程、测试驱动开发、重构、面向对象设计、Java、C#和C++等方面的培训和项目指导。他是著名的测试框架 CppUnit 和 FitCpp 的开发者,并在面向对象的活动 OOPSLA 举办了三场 CodeFest 比赛。

热爱编程技术的刘伟鹏,对C++的兴趣由来已久。现就读于南京大学计算机系攻读硕士学位。个人博客:http://blog.csdn.net/pongba。

修改后代码的艺术 pdf 预览

如何使用本书

这本书的格式在最终定稿之前可能会发生多次更改。修改遗留代码有许多不同的技术和实践,很难孤立地表达出来。考虑一下,一旦人们可以在代码中找到接缝,制作假对象并使用一些去依赖技术来去依赖代码,那么简单的修改就会变得更容易。因此,我认为让这本书更方便、更容易使用的最简单的方法就是将其主要内容(第二部分——修改代码的技巧)以FAQs的形式组织起来,因为具体的技巧往往会用到其他技巧,所以有通常是常见问题章节之间的交叉链接。在几乎每一章中,您都会找到描述特定去依赖或重构技术的其他章节的参考资料和页码。如果这种组织形式让您需要翻阅本书以寻找解决问题的方法,我很抱歉,但我仍然认为您宁愿通读它也不愿逐页阅读,并尝试了解这些技术是如何被使用。

我在修改软件的过程中遇到了很多问题。我总结了比较常见的问题,本书的每一章都对应一个具体的问题。当然,这样让每一章的标题都变长了,不过我觉得也不错,可以快速找到当前遇到的问题对应的章节。

本书的第二部分之前是一组介绍性章节(第 1 部分),然后是在修改遗留代码时有用的重构技术目录(第 3 部分)。我建议您先阅读介绍章节,尤其是第 4 章。这些章节包含了后面介绍的所有技术的上下文和术语。如果您稍后发现上下文中未涵盖的术语,您可以在词汇表中查找它。

依赖解析技术中的重构是特殊的,因为它们应该在没有测试的情况下完成,它们的作用是为以后放置测试铺平道路。我建议你去了解所有的去依赖技术,它会帮助你在修改代码时有更多的选择,

目录

第一部分:修改机制

第一章修改软件

第 2 章处理反馈

第三章知觉与分离

第 4 章接缝模型

第 5 章工具

第二部分:修改代码的技巧

第6章时间紧迫,但必须修改

第 7 章长修订

第 8 章添加功能

第 9 章无法将类放入测试工具中

第 10 章无法在测试工具中运行方法

第11章修改时应该测试哪些方法

1.1.2 改进设计

改进设计是另一种软件修改。当我们想要改变现有软件的结构和组织以使其更易于维护时,我们通常还希望能够不改变其在过程中的行为。如果一个行为在这个过程中丢失,我们通常称之为引入错误。许多程序员通常不尝试改进现有设计的主要原因之一是相对容易丢失行为或创建不良行为。

在不改变其行为的情况下改进软件设计的行为称为重构。重构背后的想法是,如果我们编写测试以确保现有行为不会改变,并且在重构过程中,通过仔细验证每个小步骤的行为不变性,我们可以重构软件,使其在不改变的情况下更易于维护软件的行为。多年来,人们一直在做一些事情来清理系统中的现有代码,而重构只出现了几年。重构不同于一般的代码清理,我们不仅仅是做低风险的工作(比如重新格式化源代码)或侵入性的风险工作(比如重写代码块),而是做一系列小的结构性改变,让代码的改变更容易从测试的支持开始。从变化的角度来看,重构的关键是重构的过程中不能有功能上的变化。改变。 (不过,行为可以稍微改变,因为您对代码结构的更改可能会导致性能发生变化,这可能会更糟或更好。)

1.1.3 优化

优化类似于重构,但目标不同。对于重构和优化,我们可以说:“我们将在进行更改时保持功能不变,但我们可能会更改其他一些内容。”对于重构,这里是“一些其他的东西”。 ” 指的是程序的结构,我们想让代码更容易维护。对于优化,“其他东西”是指程序使用的一些资源,通常是时间或内存。

1.1.4 合并

重构和优化之间的相似性可能看起来很奇怪。它们看起来比添加功能和修复错误更相似。然而,真的是这样吗?重构和优化之间的共同点是在更改某些内容的同时保持软件的功能不变。

阅读剩余
THE END