修改代码的艺术

Michael Feathers

出版时间

2007-09-25

ISBN

9787115163622

评分

★★★★★
书籍介绍
我们都知道,即使是最训练有素的开发团队,也不能保证始终编写出清晰高效的代码。如果不积极地修改、挽救,随着时间流逝,所有软件都会不可避免地渐渐变得复杂、难以理解,最终腐化、变质。因此,理解并修改已经编写好的代码,是每一位程序员每天都要面对的工作,也是开发程序新特性的基础。然而,与开发新代码相比,修改代码更加令人生畏,而且长期以来缺乏文献和资料可供参考。 本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作,而且从涵盖面和深度上都超过了前两部经典。书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等),与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。
AI导读
核心看点
  • 深入解析遗留代码的修改与重构技术
  • 结合测试与解依赖,安全修改复杂系统
  • 提供从理解到修改的完整工程化方法论
适合谁读
  • 需维护遗留代码的资深软件工程师
  • 希望提升代码质量与重构能力的开发者
  • 对测试驱动开发及设计模式感兴趣的读者
读前提醒
  • 建议先阅读《重构》以建立基础认知
  • 书中案例较多,适合当作手册随时查阅
  • 部分翻译版本存在语病,建议对照原文
读者共识
  • 修改旧代码比写新代码更具挑战性
  • 测试是安全重构遗留代码的关键保障
  • 虽内容硬核但阅读门槛较高,需耐心

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "这种感觉在一次与一个金融业的团队一起工作的时候强烈到了顶点。当时的情况是:在我加入他们之前,他们已经意识到单元测试非常有用,然而实际上进行的却是全景式的测试,他们写的测试很繁琐,需要多次调用数据库并执行大量的代码。这种测试难于编写,而且也并不常用,因为运行耗费的时间实在是太长了。"
  • "想要完全不改变现有行为地添加新行为几乎是不可能的。"
  • "在重构时我们并不只是在做那些低危险性的工作(如重整源代码的格式)或侵入性的危险工作(如重写代码块),而是进行一系列的结构上的小改动,并通过测试的支持来使得代码的修改更容易着手。"
  • "当我们避免创建新类和新方法时,既有的类和方法就会变得越来越庞大,越来越难以理解。"
  • "当在任何大型系统中进行修改时,你可能需要一点时间来熟悉一下将要修改的区域。这时好的系统和差的系统之间的差别就体现出来了。对于前者,当你熟悉了待修改的区域之后,你会对将要进行的修改充满信心。而对于那些结构糟糕的代码,从理清存在的问题到着手进行修改的过程简直就像是为了躲避一只老虎而跳下悬崖一样痛苦。你一再犹豫:“我真的准备好这么做了吗?唔,好吧,我想我别无选择。”"
  • "测试与自动化重构"
  • "我们可以通过解依赖并将类分配给不同的包来加快编译过程,这么做是非常值得的。当你可以快速编译并运行测试时,在开发过程中便能够获得更佳的反馈。大多数时候,这就意味着更少的错误,另外情况也没那么令人恼火了。但这也并非免费的午餐,增加接口和包的数量也会增加一些概念的复杂性。值得这么做吗?答案是肯定的。的确,有时候,包和接口的数量多了以后,找起东西来要多花点工夫,但找到之后用它们工作会非常容易。"
  • "依赖性往往是进行测试的最为明显的障碍。这表现在两个方面:一是难以在测试用具中实例化目标对象;二是难以在测试用具中运行方法。通常在遗留代码中你得先解依赖而后才能将测试安置到位。"
作者简介
Michael Feathers 世界级面向对象技术专家,以丰富的软件项目开发经验著称。目前在世界顶尖的软件咨询公司Object Mentor从事敏捷方法/极限编程、测试驱动开发、重构、面向对象设计、Java、C#和C++等方面的培训和项目指导。他是著名测试框架CppUnit和FitCpp的开发者,已经主持了三次面向对象界盛会OOPSLA上的CodeFest比赛。 刘未鹏,热爱编程技术,长期关注C++,现在南京大学计算机系攻读硕士学位,译有《Imperfect C++中文版》、《Exceptional C++ Style中文版》(人民邮电出版社出版)。个人blog:http://blog.csdn.net/pongba。
用户评论
就那样。
比较一般,年底也比较久了,内容主要就是讲重构和测试,但是现在看起来没有太多的启发了
值得一读
=。= 真的是鹏鹏翻的?
从测试角度出发的重构
书的内容显然是局限于那个面向对象至上的时代,翻译也没有那么好,诸多错误
很经典的一本书,读完有被启发到,只是翻译的有些不敢恭维。07年的书了,很多能力目前的ide都可以支持,什么时候可以与时俱进的更新一版?
翻译非常一般
给了很大的安慰,困难的时候可以再回来看看
下载
收藏