Cover of Working Effectively with Legacy Code

Working Effectively with Legacy Code

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.

Read more

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.

Audience
adult
Length
long · 456 pages

Click a tag to see books like this one that share it. Point at it (on a phone, tap it) for less of it instead.

Read it? Sign in to help tag it.

Liked Working Effectively with Legacy Code? Here’s where I’d start.

These suit anyone who liked Working Effectively with Legacy Code. Sign in and mark a few books for picks shaped around your own taste.

  1. Refactoring: Improving the Design of Existing Code Shares programming, tech, technical
  2. Growing Object-Oriented Software, Guided by Tests Shares programming, tech, software development
  3. Test Driven Development: By Example Shares programming, tech, software development
  4. Refactoring to Patterns (Addison Wesley Signature Series) Shares programming, tech, software development

“People who read Working Effectively with Legacy Code tend to reach for these next.”

  1. Agile Software Development, Principles, Patterns, and Practices (Alan Apt Series)
  2. Domain-Driven Design: Tackling Complexity in the Heart of Software
  3. xUnit Test Patterns: Refactoring Test Code
  4. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions

“If you want more of the same (science about technology), start with these.”

  1. C# in Depth
  2. The Clean Coder: A Code of Conduct for Professional Programmers
  3. Java Generics and Collections
  4. Computer Graphics: Principles and Practice

“If it was the programming that hooked you, try one of these.”

  1. The Pragmatic Programmer: From Journeyman to Master
  2. Design Patterns: Elements of Reusable Object-Oriented Software
  3. 97 Things Every Programmer Should Know: Collective Wisdom from the Experts
  4. Head First Design Patterns: A Brain-Friendly Guide

“These start from a similar idea, even if they go somewhere else with it.”

  1. Learning Cocoa with Objective-C
  2. Java for Dummies [With CDROM]
  3. Rails Antipatterns: Best Practice Ruby on Rails Refactoring
  4. Rails 4 Test Prescriptions: Build a Healthy Codebase