Book description
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
- Contents
- Foreword
- Preface
- Introduction
- 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
- Glossary
- Index
Product information
- Title: Working Effectively with Legacy Code
- Author(s):
- Release date: September 2004
- Publisher(s): Pearson
- ISBN: 9780131177055
You might also like
book
Clean Code: A Handbook of Agile Software Craftsmanship
Even bad code can function. But if code isn’t clean, it can bring a development organization …
book
Clean Coder, The: A Code of Conduct for Professional Programmers
Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They …
book
Designing Data-Intensive Applications
Data is at the center of many challenges in system design today. Difficult issues need to …
book
Clean Architecture: A Craftsman's Guide to Software Structure and Design
Building upon the success of best-sellers The Clean Coder and Clean Code, legendary software craftsman Robert …