Your Amazon Prime 30-day FREE trial includes:
| Delivery Options | ![]() |
Without Prime |
|---|---|---|
| Standard Delivery | FREE | From £2.99* |
| Premium Delivery | FREE | £3.95 |
| Same-Day Delivery (on eligible orders over £20 to selected postcodes) Details | FREE | £5.99 |
Unlimited Premium Delivery is available to Amazon Prime members. To join, select "Yes, I want a free trial with FREE Premium Delivery on this order." above the Add to Basket button and confirm your Amazon Prime free trial sign-up.
Important: Your credit card will NOT be charged when you start your free trial or if you cancel during the trial period. If you're happy with Amazon Prime, do nothing. At the end of the free trial, you will be charged £95/year for Prime (annual) membership or £8.99/month for Prime (monthly) membership.
Buy new:
£43.39£43.39
FREE delivery:
Wednesday, Jan 17
in the UK
Dispatches from: Amazon Sold by: Amazon
Buy used £38.53
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet or computer – no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the author
OK
Working Effectively with Legacy Code Paperback – Illustrated, 22 Sept. 2004
Purchase options and add-ons
This book provides programmers with the ability to cost effectively handlecommon legacy code problems without having to go through the hugelyexpensive task of rewriting all existing code. It describes a series of practicalstrategies that developers can employ to bring their existing softwareapplications under control. The author provides useful guidance about how touse these strategies when refactoring or making functional changes to codebases. One of the book's key points is that it teaches developers to write teststhat can be used to make sure they are not unintentionally changing theapplication as they optimize it. Examples are provided in Java, C++, and Csharp,and the book assumes that the reader has some knowledge of UMLnotation. Strategies using UML and code in C++ and Java primarily whilelanguage independent advice will be delivered in side bars and appendices forlanguage specific users.
From the Back Cover
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.
About the Author
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.
© Copyright Pearson Education. All rights reserved.
- ISBN-100131177052
- ISBN-13978-0131177055
- Edition1st
- Publication date22 Sept. 2004
- LanguageEnglish
- Dimensions17.78 x 3.05 x 23.5 cm
- Print length456 pages
Frequently bought together

What do customers buy after viewing this item?
From the brand
-
We add life to a lifetime of learning.
Our vision is to help everyone to realise the life they imagine through learning.
We use our knowledge, experience and technology to deliver the best learning products.
-
Who are our authors?
Our authors are the creators, innovators and thought leaders including Donald Knuth, Bjarne Stroustrup, Brendan Gregg, Martin Fowler, Robert C. Martin.
Are our books for professionals only?
Our catalogue includes tutorials, references, guides and deep dives for all levels from beginners with no experience to industry professionals wanting to upskill.
Why choose Pearson?
We have been publishing the leading texts for decades and our titles appear on numerous "most recommended" lists.
-
-
Addison-Wesley is for those working with technology.
This includes resources for programmers, developers, administrators, data scientists and engineers, team managers, students, and more.
-
Project-based learning designed to help you learn the features of Adobe software quickly and easily.
Developed with the support of Adobe product experts.
-
Authorized book publisher of Cisco networking technology, Cisco certification self-study and Cisco Networking Academy Program materials.
Products from Cisco Press are part of a recommended learning path from Cisco Systems that combines instructor-led training with hands-on instruction, e-learning, and self-study.
-
FT Publishing covers business, finance, and professional development topics and cater to those at all levels in their career.
-
Microsoft Press is a publishing alliance between Microsoft Corporation and Pearson.
Since 1984, Microsoft Press has helped IT professionals, developers, and home office users advance their technical skills and knowledge with books and learning resources.
-
Practical advice on the tools you need to enhance your personal and professional life.
Easy-to-follow resources on gadgets and technologies.
From the Publisher
|
|
|
|
|
|
|---|---|---|---|---|---|
| A Handbook of Agile Software Craftsmanship | Practical Advice for the Professional Programmer | A Craftsman's Guide to Software Structure and Design | Professionalism, Pragmatism, Pride | Agile values and principles for a whole new generation of developers | |
| Core Concept | Best agile practices of cleaning code “on the fly” that will instill within you the values of a software craftsman and make you a better programmer—but only if you work at it. | Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical advice–about everything from estimating and coding to refactoring and testing. | Uncle Bob presents the universal rules of software architecture that will help you dramatically improve developer productivity throughout the life of any software system. | Sandro Mancuso helped found the world’s largest organization of software craftsmen; now, he shares what he’s learned through inspiring examples and pragmatic advice you can use in your company, your projects, and your career. | As with his other books, Martin's Clean Agile: Back to Basics doesn't merely present multiple choices and options, and say "use your best judgment"; it tells you what choices to make and why those choices are critical to your success. |
| Endoresement | "It is the best pragmatic application of Lean principles to software I have ever seen in print." —James O. Coplien, Founder of the Pasteur Organizational Patterns project | “Read, learn, and live the lessons in this book and you can accurately call yourself a software professional.” —George Bullock Senior Program Manager Microsoft Corp. | "A good architecture comes from understanding it more as a journey than as a destination, more as an ongoing process of enquiry than as a frozen artifact." -- Kevlin Henney | "If you are the type of programmer, team lead, or manager who craves to be able to go home after a long day of work, look in the mirror, and say, 'Damn, I did a good job today!' then this is the book for you." -- Robert C. Martin | “In the journey to all things Agile, Uncle Bob has been there, done that, and has the both the t-shirt and the scars to show for it. This delightful book is part history, part personal stories, and all wisdom." |
Product details
- Publisher : Addison-Wesley; 1st edition (22 Sept. 2004)
- Language : English
- Paperback : 456 pages
- ISBN-10 : 0131177052
- ISBN-13 : 978-0131177055
- Dimensions : 17.78 x 3.05 x 23.5 cm
- Best Sellers Rank: 42,597 in Books (See Top 100 in Books)
- 11 in Software Testing
- 17 in Amazon Online Shopping
- 46 in Functional Programming
- Customer reviews:
About the author

Discover more of the author’s books, see similar authors, read author blogs and more
Customer reviews
Customer Reviews, including Product Star Ratings, help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyses reviews to verify trustworthiness.
Learn more how customers reviews work on Amazon-
Top reviews
Top reviews from United Kingdom
There was a problem filtering reviews right now. Please try again later.
Very large applications will:
* contain millions of lines of code
* have been in production for years
* have been worked on by dozens of developers, with varying degrees of competence
* have many bugs
* be so big that nobody fully understands them
* be difficult to change - a seemingly small change could introduce serious bugs
If you find yourself working on such a beast, what can you do? I suggest that you take a long hard look at this book. It will give you confidence, knowing that you’re not alone.
After introductory material, it’s organised into a list of problems/FAQS and solutions/patterns which are heavily interlinked. Example: I don’t have much time and I have to change it => sprout method, sprout class, wrap method, and wrap class. Wrap class itself refers to extract implementer, extract interface, and decorator pattern.
You’d probably go mad or become dispirited if you read all of the book sequentially. I recommend that you read the first, easy sections; skim the rest so that you get an overview of the contents; then use it in anger when you have a real problem to solve. The techniques you actually use then become part of your armoury for the future.
Without these techniques it can be soul-destroying to work on “legacy” applications. With the techniques you stand a chance of transforming the situation into being comfortable and maybe even enjoyable - because you’re applying engineering techniques to make valuable applications even more valuable.
I wish I'd found Michael's book earlier, it would have helped ease the transition. Of course, not everyone else's code is legacy code, but even if you are not handling true 'legacy' code, this book will help you deal with the problems you face.
The book is in three parts. The first is a discussion of how you go about changing software that is badly structured and has complex interactions and side effects. Where do you start, and how do you make sure that you don't break things further down the convoluted chain of dependencies. The answer to the latter, of course, is testing, testing, testing, and the author makes a good enough case to persuade even the most sloth like to get into the testing mode.
The second part of the book is organised almost like an FAQ with chapters devoted to common problems like 'I don't understand the code well enough to change it'. This one crops up all too often, and is an excellent example of how the author doesn't avoid difficult questions. The final part of the book is a useful catalog of mostly pattern based techniques that can be used to break dependencies.
The book is well written and features clear examples that are written in either C++, Java, C and C#, and the problems caused by the different features, or lack of them, available to the different languages are discussed and work arounds suggested. I enjoyed reading this book.
Highly recommended!
With that in mind, this a book about refactoring with an assumption the reader sees the value of TDD and works in a C# like language. This should not be too much of a surprise given the link to Robert Martin.
If you have a code base which has no test coverage and grew organically and you don't know how to approach fixing it, you will find some guidance.
I've docked stars for a couple of reasons. First, it's too long. The material feels stretched. I'd have been happier if it were a third of the size. I've also docked a star for being restricted in the number of simultaneous Kindle devices it will work on (5). Probably not an issue for a lot of people, but it is for me. I started with a two star rating, but if you take it as an introduction level text, it's probably sufficient.












