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 platformwith 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.
Table of contents
- Title Page
- Copyright Page
- Part I: The Mechanics of Change
Part II: Changing Software
- Chapter 6: I Don’t Have Much Time and I Have to Change It
- Chapter 7: It Takes Forever to Make a Change
- Chapter 8: How Do I Add a Feature?
- Chapter 9: I Can’t Get This Class into a Test Harness
- Chapter 10: I Can’t Run This Method in a Test Harness
- Chapter 11: I Need to Make a Change. What Methods Should I Test?
- Chapter 12: I Need to Make Many Changes in One Area. Do I Have to Break Dependencies for All the Classes Involved?
- Chapter 13: I Need to Make a Change, but I Don’t Know What Tests to Write
- Chapter 14: Dependencies on Libraries Are Killing Me
- Chapter 15: My Application Is All API Calls
- Chapter 16: I Don’t Understand the Code Well Enough to Change It
- Chapter 17: My Application Has No Structure
- Chapter 18: My Test Code Is in the Way
- Chapter 19: My Project Is Not Object Oriented. How Do I Make Safe Changes?
- Chapter 20: This Class Is Too Big and I Don’t Want It to Get Any Bigger
- Chapter 21: I’m Changing the Same Code All Over the Place
- Chapter 22: I Need to Change a Monster Method and I Can’t Write Tests for It
- Chapter 23: How Do I Know That I’m Not Breaking Anything?
- Chapter 24: We Feel Overwhelmed. It Isn’t Going to Get Any Better
- Part III: Dependency-Breaking Techniques
- Appendix: Refactoring
- Title: Working Effectively with Legacy Code
- Release date: September 2004
- Publisher(s): Pearson
- ISBN: 9780131177055
You might also like
51+ hours of video instruction. Overview The professional programmer’s Deitel® video guide to Python development with …
Clean Architecture: A Craftsman’s Guide to Software Structure and Design
Practical Software Architecture Solutions from the Legendary Robert C. Martin (“Uncle Bob”) By applying universal rules …
40 Algorithms Every Programmer Should Know
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental …
Head First Design Patterns, 2nd Edition
You know you don’t want to reinvent the wheel, so you look to design patterns—the lessons …