当前位置: 首页 > 新闻 > 信息荟萃
编号:7200
修改代码的艺术高清在线完整.pdf
http://www.100md.com 2021年2月11日
第1页
第10页
第11页
第26页
第45页
第247页

    参见附件(241191KB,360页)。

     《修改代码的艺术》还包括了一组共24项解依赖技术,它们能帮助你单独对付代码中的问题片段,并实现更安全的修改。修改代码是每一位软件开发人员的日常工作。

    内容简介

    我们都知道,即使是最训练有素的开发团队,也不能保证始终编写出清晰高效的代码。如果不积极地修改、挽救,随着时间流逝,所有软件都会不可避免地渐渐变得复杂、难以理解,最终腐化、变质。因此,理解并修改已经编写好的代码,是每一位程序员每天都要面对的工作,也是开发程序新特性的基础。然而,与开发新代码相比,修改代码更加令人生畏,而且长期以来缺乏文献和资料可供参考。

    本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作,而且从涵盖面和深度上都超过了前两部经典。书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等),与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。

    作者简介

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

    刘未鹏,热爱编程技术,长期关注C++,现在南京大学计算机系攻读硕士学位,译有《Imperfect C++中文版》、《Exceptional C++ Style中文版》(人民邮电出版社出版)。个人blog:http://blog.csdn.net/pongba。

    修改代码的艺术预览

    如何使用本书

    本书的形式在最终确定之前曾几经易改。在修改遗留代码的过程中有许多不同的技术和实践如果独立开来是很难阐述好的。考虑到一旦人们能在代码中找到接缝(seam)、制造伪对象(fakeobject),并利用某些解依赖技术来解开代码中的依赖的话,简单的修改就会变得更容易。因此我想,要想让本书用起来更方便更顺手,最简单的办法莫过于将其主要内容(第二部分--修改代码的技术)以FAQ的形式来组织了,因为特定的技术往往要用到其他技术,所以FAQ章节之间经常有交叉链接。几乎在每章你都会发现一些对其他章节的引用及页码,后者描述了特定的解依赖或重构技术。如果这种组织形式使得你在寻找一个问题的解决方案的时候需要在书中翻来翻去的话,我感到很抱歉,但我仍然觉得你宁可这样也肯定不愿意去一页一页地读,并试图去理解那些技术都是怎样用的。

    在修改软件的过程中我曾遇到过许多问题,我把其中比较常见的问题总结出来,本书每章都对应一个特定的问题。当然,这使得每章的标题比较长,但我觉得这样也好,你能够很快就找到对应你当前遇到的问题的章节。

    在书的第二部分之前有一组介绍性章节(第一部分),之后则是一个重构技术的目录(第三部分),这些技术在修改遗留代码时是非常有用的。我建议你先阅读引入章节,尤其是第4章。这些章节中包含了后面要涉及的所有技术的上下文和术语。如果后面你还发现没有在上下文中涉及的术语,可以到术语表中去找。

    解依赖技术中的重构工作是比较特殊的,因为它们本就应该是在没有测试的情况之下完成的,它们的作用就是给后面安放测试铺好道路。我建议你把所有的解依赖技术都浏览一下,这有助于你在修改代码的时候有更多的选择,

    目 录

    第一部分 修改机理

    第1章 修改软件

    第2章 带着反馈工作

    第3章 感知和分离

    第4章 接缝模型

    第5章 工具

    第二部分 修改代码的技术

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

    第7章 漫长的修改

    第8章 添加特性

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

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

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

    1.1.2改善设计

    改善设计则是另一种软件修改。当我们想要改变既有软件的结构和组织,以令其更易于维护时,通常也会希望能够在此过程中不改变其行为。倘若在这个过程中丢掉了某个行为,我们通常会将其称作引入了一个bug。许多程序员通常并不试图改善既有设计,其主要原因之一就是这一举动相对容易导致行为丧失或坏行为的诞生。

    在不改变软件行为的前提下改善其设计的举动称为重构(refactoring),重构背后的理念是,如果我们编写测试以确保现有行为不变,并在重构过程中的每一小步都小心验证其行为的不变性的话,我们就可以在不改变软件行为的前提下通过重构使其更具可维护性。多年来人们一直都在做着清理系统中既有代码的事情,而重构的出现则是近几年的事。重构与一般的代码清理不同,在重构时我们并不只是在做那些低危险性的工作(如重整源代码的格式)或侵入性的危险工作(如重写代码块),而是进行一系列的结构上的小改动,并通过测试的支持来使得代码的修改更容易着手,从改变的角度来说,重构的关键在于在进行重构的过程中不应当有任何功能上的改变。(不过行为可以稍有改变,因为你在代码结构上的改动可能会导致性能上的改变,其性能可能会变得差一点,也可能会变得好一点。)

    1.1.3优化

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

    1.1.4综合起来

    重构与优化的相似性看起来似乎有点奇怪。它们彼此间的相似性看上去比添加特性与修正bug之间的相似性还要高。然而,真的是这样吗?重构与优化之间的共同点就是在改变某些东西的过程中保持软件的功能不变。

    修改代码的艺术高清在线截图

您现在查看是摘要介绍页, 详见PDF附件(241191KB,360页)