Get more out of your legacy systems: more performance, functionality, reliability, and manageability
Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts.
In this book, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control.
The topics covered include
Understanding the mechanics of software change: adding features, fixing bugs, improving design, optimizing performance
Getting legacy code into a test harness
Writing tests that protect you against introducing new problems
Techniques that can be used with any language or platform—with examples in Java, C++, C, and C#
Accurately identifying where code changes need to be made
Coping with legacy systems that aren't object-oriented
Handling applications that don't seem to have any structure
This book also includes a catalog of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes.
© Copyright Pearson Education. All rights reserved.
MICHAEL C. FEATHERS works for Object Mentor, Inc., one of the world's top providers of mentoring, skill development, knowledge transfer, and leadership services in software development. He currently provides worldwide training and mentoring in Test-Driven Development (TDD), Refactoring, OO Design, Java, C#, C++, and Extreme Programming (XP). Michael is the original author of CppUnit, a C++ port of the JUnit testing framework, and FitCpp, a C++ port of the FIT integrated-testing framework. A member of ACM and IEEE, he has chaired CodeFest at three OOPSLA conferences.
当软件系统的规模随着时间不断增长时,我们怎么构建和维护它?面对别人写好的大量的代码基,如何进行后续的可持续开发?TDD,单元测试,重构,设计模式这些看上去很美的技术,是如何应用的? 毫无疑问,这本书里不可能提供上诉问题的所有答案,但是它至...
评分 评分作为一个程序员,获取知识是让我不断前进的动力,而读书是我获取知识的一条重要途径。在这个“经典”、“必读”过剩的年代里,大多数的书都仅仅扮演着传播知识的角色,真正改变自己对某些问题看法的书其实少之有少。限于读书时的眼界和能力,在我列表中,让我拍案惊奇的书只有...
评分我发现很多网页里卓越的报价常常比当当的高,可是实际情况是点击链接后卓越比当当低! 比如这本书实际报价:卓越是46.5,当当是46.6 不知道是不是最近卓越大范围调整了价格?! 顺便说一下,在csdn读书频道上也有类似情况。
评分Java重构的必读书,非常实用,但有的时候我想,Java代码的重构如此复杂,是否说明面向对象的设计思路在很多场合并不适用呢?比如很多服务端的逻辑本身是典型的函数转换,如果使用FP范型开发会简单的多。 推而广之,如果一种技术在大多数程序员手里都越用越复杂,以至于需要专家...
拿到《Working Effectively with Legacy Code》这本书,我最初的期待是能够找到一些能让我“起死回生”的秘籍,瞬间让那些缠绕不清的遗留代码变得整洁有序。然而,这本书所提供的,远比我预期的要深刻得多。它更像是一本关于“如何与时间赛跑,并最终获胜”的战术指南。作者深刻理解了遗留代码的生存状态,它不是一成不变的,而是随着时间的推移,被不断修修补补,充满了历史的印记。书中强调的“小步快跑”和“持续改进”的理念,让我意识到,对待遗留代码,最有效的策略不是颠覆,而是渐进。我非常喜欢书中关于“代码‘坏味道’识别”的章节,它就像为我们提供了一份“体检报告”,让我们能够清晰地看到代码中的问题所在,并有针对性地去解决。从如何安全地修改“恐龙级别的”方法,到如何一点点地将混乱的代码模块化,每一步都充满了智慧和实践的指导。这本书的语言风格非常平实,没有华丽的辞藻,但每一个字都透露着作者丰富的实战经验,让人读起来既能学到知识,又能获得启发。
评分这本《Working Effectively with Legacy Code》真是让我打开了新世界的大门!在读这本书之前,我总是对那些庞大、古老、几乎无人敢轻易触碰的代码库感到深深的恐惧。每次接手这样的项目,就像是在黑暗的迷宫里摸索,生怕一不小心就触碰了某个“雷区”,导致整个系统崩溃。这本书却以一种极其务实和富有同情心的方式,循序渐进地剖析了遗留代码的本质,并提供了一系列行之有效的策略。作者并没有回避问题的棘手程度,反而承认了这些代码存在的合理性和维护者的不易。从如何安全地修改代码,到如何逐步引入自动化测试,再到如何重构那些令人头疼的“大泥球”,每一个章节都充满了智慧和经验的结晶。我尤其喜欢书中关于“测试驱动开发”在遗留代码环境下的应用,这不仅仅是技术上的指导,更是一种思维模式的转变。它让我意识到,即使面对陈旧的代码,我们依然可以像在“新”项目中一样,建立起信心,逐步改进,最终让代码变得更加清晰、健壮和易于维护。这本书读起来一点也不枯燥,作者用了很多生动的例子和比喻,让我很容易理解那些抽象的概念。它不仅仅是一本技术书籍,更像是一位资深前辈在分享他多年的宝贵经验,让人受益匪浅。
评分我一直以为,处理遗留代码是一门“炼金术”,需要神乎其技才能驾驭。然而,《Working Effectively with Legacy Code》却用一种非常接地气的方式,颠覆了我的认知。这本书教会我,与其恐惧和逃避,不如理解和拥抱。它详细地讲解了如何一步一步地让遗留代码变得更可控、更易于维护,而不是想着一步到位地将其全部重写(这往往是不现实的)。书中关于“验收测试”和“单元测试”在遗留代码中的作用,以及如何逐步构建起测试体系,是我最受用的部分。作者巧妙地利用了各种“桥接”技术,让我们可以在不修改核心代码的情况下,逐步为系统增加安全网。我最欣赏的一点是,这本书并没有给出某种“银弹”式的解决方案,而是提供了一系列灵活的策略,可以根据不同的遗留代码情况进行组合和调整。这让我在实际工作中,可以根据具体问题,选择最合适的工具和方法。读这本书的过程中,我感觉自己不仅在学习技术,更是在学习一种解决问题的思路和态度。它让我明白,即使面对再糟糕的代码,只要有正确的方法和耐心,我们总能找到改进的路径。
评分对于长期在遗留代码环境中摸爬滚打的开发者来说,《Working Effectively with Legacy Code》简直就是一股清流。它没有回避那些令人头疼的问题,而是直面现实,并且提供了一系列极具操作性的解决方案。我曾经一度认为,处理遗留代码是一件“吃力不讨好”的事情,充满了挫败感。但这本书让我看到了希望,它教会我如何利用自动化测试作为“安全气囊”,如何在不破坏现有功能的情况下,逐步进行代码的改进和重构。我尤其喜欢书中关于“如何建立信心”和“如何与团队沟通”的部分,这些非技术性的内容,却往往是成功处理遗留代码的关键。作者的思路非常清晰,从理解遗留代码的本质,到识别代码中的“坏味道”,再到具体的改进策略,层层递进,让我能够循序渐进地掌握这些技巧。读这本书的过程中,我感觉自己仿佛置身于一个经验丰富的导师的指导之下,学习着如何优雅地解决那些看似棘手的难题。它让我明白,即使面对代码的“过去”,我们依然可以创造更美好的“未来”。
评分这本书的出现,简直就是遗留代码维护者的福音!我从事软件开发多年,不可避免地要和各种“老古董”级的代码库打交道。这些代码往往历史悠久,文档稀少,而且充满了各种“巧妙”的实现,让新人望而却步,即便是老手也常常小心翼翼,生怕修改一个小小的bug就引发连锁反应。读完《Working Effectively with Legacy Code》,我感觉自己像是获得了一套“寻宝图”和“排雷指南”。书中详细阐述了理解遗留代码的艺术,以及如何在不破坏现有功能的前提下,逐步对其进行改进。作者对代码“味道”的分类,以及针对不同“味道”提出的具体解决方案,都非常有启发性。我学会了如何识别那些潜在的风险点,如何用最少的力量来获得最大的安全感。特别是关于如何引入自动化测试的部分,简直是解决了我的燃眉之急。我之前一直觉得给没有测试的代码加测试几乎是不可能的任务,但这本书提供了切实可行的方法,让我看到了希望。它不仅仅是关于“如何做”,更重要的是“为什么这样做”,以及在执行过程中需要注意的那些细微之处。这本书的语言风格也非常友好,没有那种高高在上的说教感,而是像一位和你并肩作战的战友,分享着他的作战心得。
评分2012-02-07 有点罗嗦,没有《重构》那种耳目一新的感觉。
评分算是这方面经典书籍了吧
评分不只是TDD测试而已,设计的理念也在点滴中渗透,不知不觉就从头看到尾了,都是我们经常工作中遇到的问题。 作者行文流畅,偶尔还写上一两句非常quotable的俏皮话。例如讲到decorator时,他说“Navigating through code that contains decorators that decorate other decorators is a lot like peeling away the layers of an onion. It is necessary work, but it does make your eyes water.” :)
评分介绍了很有用的`characterization tests` and `Link seams`
评分TDD, 短小精湛,好读
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2026 book.quotespace.org All Rights Reserved. 小美书屋 版权所有