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.
如果你想重构,重要的前提就是有强力的测试.哪怕你有自动化重构工具在手. 如果你想对既有代码进行测试,你就必须先重构,因为代码根本就没有办法在测试工具中实例化. …… 新写的代码大多是可以先进行测试,然后再挂接到原有代码中.而对付遗留的代码,我们则需要一点点地把代码抠出...
评分我发现很多网页里卓越的报价常常比当当的高,可是实际情况是点击链接后卓越比当当低! 比如这本书实际报价:卓越是46.5,当当是46.6 不知道是不是最近卓越大范围调整了价格?! 顺便说一下,在csdn读书频道上也有类似情况。
评分买这本书的原因一是这本书确实是一本关于修改老代码的经典,二来翻译者是中国地区 InfoQ 的主编。 但是入手看了大概到100多页之后实在是忍不住要上来吐槽一下。 首先是翻译的通畅性,应该说是比较烂的水准<del>只能说是将将达到合格的水准,</del>这个可能是个人的偏见。但是...
评分如果你想重构,重要的前提就是有强力的测试.哪怕你有自动化重构工具在手. 如果你想对既有代码进行测试,你就必须先重构,因为代码根本就没有办法在测试工具中实例化. …… 新写的代码大多是可以先进行测试,然后再挂接到原有代码中.而对付遗留的代码,我们则需要一点点地把代码抠出...
这本《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》,我感觉自己像是获得了一套“寻宝图”和“排雷指南”。书中详细阐述了理解遗留代码的艺术,以及如何在不破坏现有功能的前提下,逐步对其进行改进。作者对代码“味道”的分类,以及针对不同“味道”提出的具体解决方案,都非常有启发性。我学会了如何识别那些潜在的风险点,如何用最少的力量来获得最大的安全感。特别是关于如何引入自动化测试的部分,简直是解决了我的燃眉之急。我之前一直觉得给没有测试的代码加测试几乎是不可能的任务,但这本书提供了切实可行的方法,让我看到了希望。它不仅仅是关于“如何做”,更重要的是“为什么这样做”,以及在执行过程中需要注意的那些细微之处。这本书的语言风格也非常友好,没有那种高高在上的说教感,而是像一位和你并肩作战的战友,分享着他的作战心得。
评分TDD, 短小精湛,好读
评分过誉
评分正在读.
评分介绍了很有用的`characterization tests` and `Link seams`
评分改旧代码库改到想哭的时候看一眼可以求得慰藉
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有