修改代码的艺术

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

作者简介

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

书籍目录

第一部分 修改机理第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这样的过程式语言。作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等)与解依赖技术及大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。

内容概要

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

图书封面


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



发布书评

 
 


精彩书评 (总计10条)

  •     当软件系统的规模随着时间不断增长时,我们怎么构建和维护它?面对别人写好的大量的代码基,如何进行后续的可持续开发?TDD,单元测试,重构,设计模式这些看上去很美的技术,是如何应用的?毫无疑问,这本书里不可能提供上诉问题的所有答案,但是它至少提供给我们了一种思路或者说是一个演示。让我们知道这么多优秀的可以让我们的设计、我们的代码变得更美、更有弹性、更易于维护技术是如何应用的。更多的时候,我们都是在一个既有的代码基上工作的,修改它、扩展它、重构它。然而它肯定不是尽善尽美的,如果我们想修改它的架构、或是调整某些东西的实现、抑或加入些新功能?这时怎么能在既有的约束下,实现我们的需求呢?一个旧有框架,如何能不断的进化,而且扩展性,弹性也越来越好呢。基本上这本书就是谈论这些内容的。实际平时基本不怎么写单元测试,对单元测试和TDD了解的也不多,我基本是拿这个当入门书看了。而且这本书对重构和解依赖等一些技术的讲解也是什么到位的,值得一看
  •     我发现很多网页里卓越的报价常常比当当的高,可是实际情况是点击链接后卓越比当当低!比如这本书实际报价:卓越是46.5,当当是46.6不知道是不是最近卓越大范围调整了价格?!顺便说一下,在csdn读书频道上也有类似情况。
  •     这本书看的时间非常长, 断断续续有3个星期了吧, 不错的书, 至少对我来说是这样, 因为我现在就碰到了书中列出的种种问题:对已有的没有完善的单元测试的核心系统进行重构.为了保证少出乱子, 不出乱子, 我必须小心的对超大类, 巨型方法采用各种重构手段进行修改, 没有单元测试作保证的系统进行重构是非常危险的事儿, 那怎么办呢, 这本书让我知道了不少好的方法.与<重构到模式>一样, 这也是一本围绕重构来阐述如何修改代码, 只不过它面对的场景是遗留系统.对遗留系统进行重构首先要做的就是要让我们的修改能够被单元测试用具夹住, 就像对一栋居民楼进行改造一样, 必须先安装脚手架, 拉上防护网, 做好安全措施, 然后再开工. 从而减少因为修改带来的风险.如何在修改代码前搞定对应的单元测试呢?这是一个非常有技巧的活儿, 因为遗留系统可能因为设计不佳而无法或者很难非常容易的为其修改部分添加单元测试. 之所以造成这样的局面一个重要的方面是无法对要测试的部分进行解除依赖. 因此解除相关依赖也就成了修改代码首先面对的一个难题, 本书在解除依赖方面总结了非常多的方法(或模式), 这些方法总有一款会适合你. 本人觉得这应该算是这本书的所要告诉我们的主要内容吧.本书的例子大部分都是以java为主, 少量的穿插了c++的实例, 而且有些手法跟语言的关系比较大, 可能适用c++的做法, 对java并不适用.另外本书给我的另一个启发就是, 我们在写代码的时候, 应该尽量做好单元测试, 单元测试可能在最初实现的时候, 作用相对来说比较小, 但是在后期维护修改重构以及添加新功能的时候, 其威力将逐渐显现出来. 此外一些系统之所以不好修改, 后期维护困难, 与我们编码时候没有遵循一定的规则有关, 比如依赖管理, 代码复杂度控制, 这些规则其实都非常简单, 人人都会知道, 但是在具体场景能不能想到, 并加以灵活运用却是另外一回事儿, 我觉得这个必须经过大量的编码实践才能找到这种感觉, 就像学习英语, 只有多读, 多听, 多说, 才能具有一定的语感, 从而最终掌握.

精彩短评 (总计48条)

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

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024