Join Amazon Prime and ship Two-Day for free and Overnight for $3.99. Already a member? Sign in.
Working Effectively with Legacy Code and over 300,000 other books are available for Amazon Kindle – Amazon’s new wireless reading device. Learn more

 

or
Sign in to turn on 1-Click ordering.
 
 
More Buying Choices
51 used & new from $35.74

Have one to sell? Sell yours here
 
   
Working Effectively with Legacy Code (Robert C. Martin Series)
 
See larger image
 
Start reading Working Effectively with Legacy Code on your Kindle in under a minute.

Don’t have a Kindle? Get yours here.
 
  

Working Effectively with Legacy Code (Robert C. Martin Series) (Paperback)

by Michael Feathers (Author)
4.9 out of 5 stars See all reviews (28 customer reviews)

List Price: $59.99
Price: $49.31 & this item ships for FREE with Super Saver Shipping. Details
You Save: $10.68 (18%)
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.

Want it delivered Monday, July 20? Choose One-Day Shipping at checkout. Details
34 new from $36.00 17 used from $35.74
Also Available in: List Price: Our Price: Other Offers:
Kindle Edition (Kindle Book) $28.79

Frequently Bought Together

Customers buy this book with Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin Series) by Robert C. Martin

Working Effectively with Legacy Code (Robert C. Martin Series) + Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin Series)

Customers Who Bought This Item Also Bought

Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)

Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)

by Martin Fowler
4.5 out of 5 stars (138)  $51.99
Test Driven Development: By Example (Addison-Wesley Signature Series)

Test Driven Development: By Example (Addison-Wesley Signature Series)

by Kent Beck
3.9 out of 5 stars (32)  $40.54
xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series)

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series)

by Gerard Meszaros
4.6 out of 5 stars (11)  $46.79
Code Complete: A Practical Handbook of Software Construction

Code Complete: A Practical Handbook of Software Construction

by Steve McConnell
4.8 out of 5 stars (107)  $31.49
The Pragmatic Programmer: From Journeyman to Master

The Pragmatic Programmer: From Journeyman to Master

by Andrew Hunt
4.4 out of 5 stars (143)  $40.47
Explore similar items

Editorial Reviews

Product Description
This is the eBook version of the printed book. If the print book includes a CD-ROM, this content is not included within the eBook version. 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.

--This text refers to the Kindle Edition edition.

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.



See all Editorial Reviews

Product Details

  • Paperback: 456 pages
  • Publisher: Prentice Hall PTR; 1 edition (October 2, 2004)
  • Language: English
  • ISBN-10: 0131177052
  • ISBN-13: 978-0131177055
  • Product Dimensions: 9.2 x 6.9 x 1.2 inches
  • Shipping Weight: 1.8 pounds (View shipping rates and policies)
  • Average Customer Review: 4.9 out of 5 stars See all reviews (28 customer reviews)
  • Amazon.com Sales Rank: #15,348 in Books (See Bestsellers in Books)

    Popular in this category: (What's this?)

    #96 in  Books > Computers & Internet > Computer Science > Software Engineering


What Do Customers Ultimately Buy After Viewing This Item?


Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
Check the boxes next to the tags you consider relevant or enter your own tags in the field below.
(3)
(2)

Your tags: Add your first tag
 
Help others find this product — tag it for Amazon search
No one has tagged this product for Amazon search yet. Why not be the first to suggest a search for which it should appear?

 

Customer Reviews

28 Reviews
5 star:
 (26)
4 star:
 (1)
3 star:
 (1)
2 star:    (0)
1 star:    (0)
 
 
 
 
 
Average Customer Review
4.9 out of 5 stars (28 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

 
48 of 50 people found the following review helpful:
5.0 out of 5 stars a wealth of practical information and solutions, October 13, 2004
By J.J. Langr (United States) - See all my reviews
Martin Fowler's book on Refactoring showed us how to improve the design of our code. We learned to make changes safely, by taking small, rote steps, and by ensuring that we ran our tests after each small change. But what if we're working on the typical ugly system with no tests? In Working Effectively With Legacy Code, Michael Feathers tackles the problem that most of us end up dealing with.

Feathers does an excellent job of articulating the problems and scenarios, using clear examples from C, C++, Java, and C#. Many of the code examples look a lot like real examples I come across all the time--they don't appear to be fabricated.

Working Effectively With Legacy Code contains a catalog that provides a wealth of solutions. The catalog shows how to resolve concerns like, "I'm changing the same code all over the place" and "how do I safely change procedural code?"

The book is highly entertaining and comes across as a conversation with a really sharp, really patient guru developer. Often, it's a chore to slog through code-heavy books. But Feathers manages to keep my attention with interesting stories, loads of examples, and well-written text.

I think that Working Effectively With Legacy Code is an important book. The vast majority of existing code presents the classic catch-22: you can't change it safely because it doesn't have tests, and you can't write tests without changing it to easily support testing. It's not an easy problem, and most people will give you high-level ideas for solving it. Feathers is the first person to dig deep and present a wealth of knowledge and insight on the problem, all in one place. I'll be pulling this book from my shelf for years to come.
Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)



 
18 of 18 people found the following review helpful:
5.0 out of 5 stars excellent reference and guide, November 11, 2004
By Jeanne Boyarsky (New York, NY) - See all my reviews
"Working Effectively with Legacy Code" is a very valuable resource. The author defines "legacy code" as "code without tests." It doesn't matter whether the code was written last week or ten years ago. There is more emphasis on old code that nobody understands, mainly because it is messier and harder to work with.

The examples in the book are mainly in C, C++ and Java, but there are a couple in C# and Ruby. While it is essential to know one of these languages, the author provides enough information to understand the others. When a technique only applies to a certain language, it is clearly indicated.

The author shows how different diagrams can help you learn how to understand code. In addition to UML, there are dependency and effect sketches. The author uses these to show how to think about understanding and refactoring. Other tools, such as refactoring browsers and mocks are explained.

Speaking of refactoring, there are "dependency breaking techniques" (aka refactorings) with step-by-step instructions (Martin Fowler style) throughout the book. There are also explanations of why patterns and design rules exist. Most importantly, there are lots and lots of cross-references and an excellent index.

Working with legacy code isn't fun, but this book helps make it as painless as possible. With the split emphasis between psychological/understanding/techniques and refactoring, this book is both a great read and an excellent reference.
Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)



 
14 of 14 people found the following review helpful:
5.0 out of 5 stars No more fairy-land, October 20, 2004
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.

The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.

Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.

Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.

To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.

The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.

Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.

It's an unfortunate commentary on the state of our programming industry how much we need this book.
Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)


Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews

5.0 out of 5 stars Essential reading to sharpen your tools
This is a must-read for software engineers. It clarifies some powerful techniques for bridging the gap between legacy (test-less and/or untestable) code and fresh, testable code... Read more
Published 1 month ago by John Wesley Watson

5.0 out of 5 stars Great book
Excellent book helping you to handle legacy systems. Gave me a lot of ideas on how to go on with the system I am working on. Read more
Published 4 months ago by AG JANSEN

5.0 out of 5 stars Foundational Knowledge Most Lack for the Average Developer
Quite simply you cannot afford to be lacking this knowledge as it is simply standard in software organizations where success is not something taken lightly.
Published 4 months ago by Damon Carr

5.0 out of 5 stars best book on working with other people's code
Short and to the point. Filled with great techniques for handling legacy monsters. Much more practical than Martin Fowler's Refactoring book.
Published 6 months ago by DarkReader

5.0 out of 5 stars Great book!
This is the canonical book for working with legacy code (and you can even learn some if you're not working with legacy code). I use the things I learned from it daily!
Published 6 months ago by J. Baker

5.0 out of 5 stars Pleasant to read and extremely practical.
I am an entry level software developer who has only been in the industry for a little over a year. While I was in college, I was always provided with very clean code bases to work... Read more
Published 11 months ago by Andrew D. Conard

5.0 out of 5 stars Most of this is 'duh' but good to have in writing
I think most of the information is pretty straightforward for those who have modeled objects and component packages. Read more
Published 12 months ago by James D. Peckham

3.0 out of 5 stars A decent, light read
This book is decent but it doesn't break much new ground. The author has the Fowler-esque affectation of naming very simple things to create a shared and clear vocabulary (ie... Read more
Published 13 months ago by D. Battaile Fauber

5.0 out of 5 stars Good at what it says
If your job is working with Legacy Code, then you need to pick up this book. If you follow his line of reasoning, you can pick up solid habits to systematically revitalize... Read more
Published 13 months ago by M. D. Spitler

5.0 out of 5 stars Bad Title; Great Book
[...]

This is a must-read for software developers, I think. It's up there with Code Complete as a must-have, and I think does a better job than Refactoring by Fowler... Read more
Published 14 months ago by Steven A. Smith

Only search this product's reviews



Customer Discussions

 Beta (What's this?)
New! See all customer communities, and bookmark your communities to keep track of them.
This product's forum (0 discussions)
  Discussion Replies Latest Post
  No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
Topic:
First post:
Prompts for sign-in
  [Cancel]


Active discussions in related forums
  Discussion Replies Latest Post
What is your FAVORITE Software Development book? 0 2 days ago
   


Product Information from the Amapedia Community

Beta (What's this?)



Look for Similar Items by Category


Amazon MP3 Delivers Free Songs

Subscribe to The Amazon MP3 Download newsletter to find out about free song downloads, new releases and hot digital music deals first.
subscribe
 

Big Savings in Books

Bargain Books
Find great titles at fantastic prices in our Bargain Books Store.
 

Up To 45% Off Select Beauty Products

L'Occitane Creme Pieds and Creme Mains
Save up to 45% on select beauty items direct from Amazon Beauty.

See more from Amazon Beauty

 

The Perfect Fit

Shop for adjustable wrenches
No matter what size you need, an adjustable wrench gives you the right fit in tight situations.

Shop now

 

Where's My Stuff?

Shipping & Returns

Need Help?

Your Recent History

  (What's this?)
You have no recently viewed items or searches.

After viewing product detail pages or search results, look here to find an easy way to navigate back to pages you are interested in.

Look to the right column to find helpful suggestions for your shopping session.

Continue shopping: Top Sellers
Free
Free by Chris Anderson
Paranoia
Paranoia by Joseph Finder
My Soul to Lose
My Soul to Lose by Rachel Vincent
Glenn Beck's Common Sense

Conditions of Use | Privacy Notice © 1996-2009, Amazon.com, Inc. or its affiliates