修改代码的艺术

出版社:人民邮电出版社
出版日期:2007-09-25
ISBN:9787115163622
作者:Michael Feathers
页数:384页

内容概要

Michael Feathers 世界级面向对象技术专家,以丰富的软件项目开发经验著称。目前在世界顶尖的软件咨询公司Object Mentor从事敏捷方法/极限编程、测试驱动开发、重构、面向对象设计、Java、C#和C++等方面的培训和项目指导。他是著名测试框架CppUnit和FitCpp的开发者,已经主持了三次面向对象界盛会OOPSLA上的CodeFest比赛。
刘未鹏,热爱编程技术,长期关注C++,现在南京大学计算机系攻读硕士学位,译有《Imperfect C++中文版》、《Exceptional C++ Style中文版》(人民邮电出版社出版)。个人blog:http://blog.csdn.net/pongba。

书籍目录

第一部分 修改机理第1章 修改软件第2章 带着反馈工作第3章 感知和分离第4章 接缝模型第5章 工具第二部分 修改代码的技术第6章 时间紧迫、但必须修改第7章 漫长的修改第8章 添加特性第9章 无法将类放入测试用具中第10章 无法在测试用具中运行方法第11章 修改时应当测试哪些方法第12章 在同一地进行多处测试、是否应该将相关的所有类都解依赖第13章 修改时应该怎样写测试第14章 棘手的库依赖问题第15章 到处都是API调用第16章 对代码的理解不足第17章 应用毫无结构可言第18章 测试代码碍手碍脚第19章 对非面向对象的项目、如何安全地对它进行修改第20章 处理大类第21章 需要修改大量相同的代码第22章 要修改一个巨型方法,却没法为它编写测试第23章 降低修改的风险第24章 当你感到绝望明第三部分 解依赖技术第24章 解依赖技术附录 重构术语表索引

编辑推荐

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

作者简介

我们都知道,即使是最训练有素的开发团队,也不能保证始终编写出清晰高效的代码。如果不积极地修改、挽救,随着时间流逝,所有软件都会不可避免地渐渐变得复杂、难以理解,最终腐化、变质。因此,理解并修改已经编写好的代码,是每一位程序员每天都要面对的工作,也是开发程序新特性的基础。然而,与开发新代码相比,修改代码更加令人生畏,而且长期以来缺乏文献和资料可供参考。
本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作,而且从涵盖面和深度上都超过了前两部经典。书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等),与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。

图书封面


 修改代码的艺术下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计10条)

  •     如果你想重构,重要的前提就是有强力的测试.哪怕你有自动化重构工具在手.如果你想对既有代码进行测试,你就必须先重构,因为代码根本就没有办法在测试工具中实例化.……新写的代码大多是可以先进行测试,然后再挂接到原有代码中.而对付遗留的代码,我们则需要一点点地把代码抠出来测试.修改遗留代码时,我们需要将代码解依赖出来,建立其测试,然后才对它进行修改.并不是所有的重构手法都需要测试,特别是我们已经有了自动化的重构工具.书中说的一些解依赖技术就是一些特殊的重构技术.只要我们小步地前进,细心地操作,并借且自动化重构工具,无须测试就能进行重构.而这些重构技术的目标就是为重构出来的代码建立测试.一旦测试建立,则可对代码进行更为自信的修改,则可对代码进行更自信的进一步重构.
  •     一两个月前看到了这本书,那时候正对编写高质量的代码很感兴趣,于是借来读。这一个月断断续续的读完,实际上读书的时间仅有10天左右的业余时间。读的很浅,但也有小小的收获。这本书讲解如何在不漂亮的旧代码下写漂亮的新代码,依照先有测试后有功能的思想,作者全书都围绕如何让代码可测试展开。如果旧代码特差,而又时间紧迫,不足以把旧代码纳入测试,通常是让新代码跟旧代码独立开。这可能需要用上继承,会让代码有不必要的层次,这没关系,重构一直在进行,只要代码纳入了测试,以后就可以把它们去掉。让代码纳入测试,很多时候是说能够用伪造的东西替换真实的东西,这个伪造的东西是测试用的。可以有很多种修改方法让代码能有单元测试,主要有几类方法:预处理期、链接期、修改代码(对象、方法的替换)。本书看完之后,能回忆起来的东西很少,可能是因为没细看,也可能是写的太细了,实际工作中从来没有试过像书中所说的那样去写代码,步骤那么细,有必要吗?修改代码时,步伐要小是正确的,但小的书中所讲解的那种地步就有点受不了。本书可以总结为三个字“解依赖”,细节上就是各种各样的案例。看这本书需要有大工程代码的修改经历,不然会觉得很无趣,我现在就有点无趣,跟第一次看设计模式一样的感觉。测试驱动开发,这是我初次接触到的概念,虽然工作中挂着敏捷的羊头,但我们的代码不存在单元测试,连影子也没有。看书的时候想,实际工作不一定要有真实的测试先行,只要头脑里有单元测试的思想,写代码的时候就会尽可能的往那一个方向去,在设计的时候就会想,假如需要测试代码能这样写吗?自然的就会让代码有更少的依赖,更多的分层,这也就有了单元测试的影子,依赖少了,可扩展也强了。这也就是读这本书的潜移默化的影响。书里讲解看旧代码时,也讲解了些外围的东西,画图看代码就是很不错的方法。还有编译依赖导致一个工程的构建花费很多时间,这点书里谈到的不多,但工作中深感触,不必要的头文件包含、模板的滥用都会导致依赖增多,编译时间变长。这书跟《重构改善既有代码的设计》是同种类型。不过这本书怎么是这个书名呢?英文版是“Working Effectively with legacy Code”,也就是“在遗留代码上有效的工作”,强调的重点就不一样了。看这本书有些名词不熟悉的压力,看到了很多新名词,譬如“函数签名”(其实就是形参),“朴素化参数”(可能是说让被切入测试的函数的参数是一般类型),“自由函数”(术语表有解释,C++中是非成员函数),“领域类”(就是MVC中的逻辑M,这个词在《重构》上出现过)……这些新名词也不知道是不是通用的,如果不是通用的,搞出一个离本意遥远的新词来,又不在章节的开头给概述性解释,就真是让看者莫名其妙了(我又想到了那个“名字粉碎”的翻译,这本书里也用了它,很文艺很奇怪)。译者有些地方太小心了,加了不必要的译注,有些地方又感觉翻译得不容易快看,如果能意译会好些。
  •     很好的实战经验,快来取道。在最近的开发项目中经常想起本书讲解的一些技术,受益匪浅。虽然我并不是 working on legacy code ,但是项目代码从无到有到完善也是经历几个阶段的,在不断演化,不断修正。另一方面,一边写单元测试,也参考了本书。以前以为测试只是为了保证程序的正确性,现在才知道,原来测试尤其是单元测试,在代码重构、优化设计上的作用那么的大。本书,译为“修改代码的艺术”,讲的却不全是“修改”,目标总是“安置测试”。这里的“修改”就不是重构了,而是为了重构的高效、安全而修改代码来安置测试。书中的讲解很好,但这却不同于自然科学原理,需要在亲身实践中不断体会,从而将其掌握。2013-02-03杰良

精彩短评 (总计48条)

  •     很好的书籍,还要继续好好研习。
  •     比起重构,martin,这本书不系统。比起cleancode ,没有人家高屋建瓴深入浅出。给个3分,说明还是有用的。 其一,第一张给出遗留代码,维护需要面对的问题。变化,以及变化来源的四个方面。新功能,捉虫子,优化性能,和重构。 其二,告诉遗留代码修改一个重要办法就是,加测试。测试可以从预编译阶段,连接编译,解构unit test,降低依赖,添加测试。 其三,重构也是对遗留代码开手术刀, 第四,强调降低依赖,是遗留代码天敌。
  •     感觉还没用到的时候
  •     很有启发。里面提到接缝的思想很有参考价值。
  •     按照这个方式修改代码早就都死了
  •     很痛苦得读完这本书(跳过一些章节,算是读玩了吧),说句实在话,虽然是大师写得书,但却没有给我那种读大师思想的感觉,总体感觉一般,主要是读起来感觉比较累,不是很流畅。
  •     又一本重构的经典书籍。与《重构》和《重构与模式》构成重构三部曲。
  •     很多修改的技巧,更像一本手册,经常查阅....
  •     原来我写的全都是Legacy Code...><
  •     好书。应该介绍C++单元测试最详细的书了吧。
  •     从测试角度出发的重构
  •     还行
  •     不推荐。
  •     可以说是与重构有异曲同工之妙啊,两本书有重叠,但是互补的内容大于重叠的内容。重构偏细节,从小的地方一点一点对代码精雕细琢,而这本书则有点从大处着手,从你的类,架构,API等方面着手,实为同样的经典。啥叫经典?经典就是有事没事就拿出来看的,那就是经典。
  •     还没看
  •     Java重构的必读书,非常实用,但有的时候我想,Java代码的重构如此复杂,是否说明面向对象的设计思路在很多场合并不适用呢?
  •     : TP311.52/5813
  •     值得一读
  •     有一些真知灼见,不过有经验的人看起来可能收获不大。
  •     远远不及 Refactoring 经典
  •     值得一读,需要对设计模式熟悉。
  •     以后干活顺便把测试的活也揽下来算了。另外,看到以前乱七八糟的命名,因为我太蠢而看不懂的逻辑,还有在我后面猛塞重复代码的,都很想把人揪出来揍一顿。
  •     Feathers出品
  •     太死板了。
  •     非常深刻的一本书,如书上所说《重构》之后的又一里程碑
  •     驯服烂代码的经典著作,比《重构》更加实用,因为该书更多的涉及了如何解依赖、接缝的概念、如何修炼驯服烂代码的心法等等实用经验。建议先读此书,再读《重构》,将会面对烂代码而毫无惧色。
  •     =。= 真的是鹏鹏翻的?
  •     注重测试,详细讲解了利用测试驱动修改老代码的方法,是设计模式、重构之后不可多得的一本好书
  •     任何一个热爱编程的人都应该读一遍。
  •     没有看完,但是一本好书。
  •     很多耳目一新的测试/修改方式
  •     好软件是改出来的
  •     应该是5年前读过的书了。书中对自动化测试的必要性、代码修改的工具和方式,都有不错的介绍,后面很多内容有些遗忘,是时候重读一遍了。
  •     非常不错。里面有很多技巧,比如用模板方法处理重复代码。
  •     最近要处理下遗留代码,又重读了一遍。特别是解依赖的方法,介绍的非常全面了,和《重构》一样经典的书。
  •     以测试为驱动,很多公司做不到的,没那么仔细i读
  •     还没读出意思来
  •     安全有效修改遗留代码的经典参考书。
  •     就那样。
  •     跟人觉得这本书看起来有些枯燥。觉得和《重构》一书不在一个等级上。我都没有看完。
  •     单元测试
  •     最近的修改以前的项目了。赶紧把刘老大翻的这本书拿来瞧瞧,以免陷入泥沼之中。 God Bless Me!Don't get me fucked.
  •     先求一本实体啊,被china-pub晃点了! 作者靠谱、译者靠谱、内容靠谱,各种硬货都足够消化一段时间。大量内容和编写、修改、组织测试用例相关。虽然重构和代码重写说起来简单:减少(坏的)重复、减少耦合、增加内聚,但真正写出来每一点展开都是一本砖头书。
  •     分享了很多做法,可以说是干货
  •     基本上每周都要在几个长达2000行以上的函数里面漫游,学会控制情绪是一件很重要的事。本书的第24章”当你绝望时”只有短短的两页,可见作者也写不下去了,只好草草地以“混口饭吃”这样的理由来安慰阅读此书的码农。
  •     尽管吹捧的很厉害,但是和《重构与模式》一样,充其量只是一本案例集,无法达到《重构》的高度。
  •     编写可添加单元测试的代码,让代码有更少的依赖,可能由于各种原因没法实践每个功能都有单元测试,但往这个方向去了,会让工程有更少的依赖,可扩展变强了。
  •     还不错。通篇讲怎么在遗留代码上工作。作者大力推荐TDD,全书主要思想就是怎么修改代码去安放单元测试。安放单元测试的目的就是为了比较安全地修改和扩充遗留代码,以及保证代码原有行为不被修改。主要方法和工具就是SRP、多态等技术
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024