# Working Effectively with Legacy Code

## Feathers, Michael, 2005

This is really the book that gives one hope that we can take very bad software and through targeted incremental unit testing and refactoring, can turn it into good software while implementing and delivering new functionality the whole time.
This book is where the rubber meets the road combining unit testing and refactoring.
If one reads the book "Refactoring" by Martin Fowler and one felt a little uneasy about how this would apply to large nasty software projects, then Working Effectively with Legacy Code is the book to read.
What’s more, Michael mentions and reviews many of the object-oriented principles in Agile Software Development as well as other little bits of information that one would find in other great books about software development.
One can view this book as the logical culmination of the books "Refactoring" and "Test Driven Development" (TDD).
This book is packed with practical examples that show nearly every trick there is for refactoring nasty code to break dependencies and getting code into a unit test harness.
By the time one is done reading this book if one is not convinced of the need for unit testing and TDD, then one likely should not be developing software.

#### Contributed by [Roscoe A. Bartlett](https://github.com/bartlettroscoe)

#### Publication date:  March 28, 2019

<!---
Publish: yes
Categories: development, reliability, skills
Topics: refactoring, design, software engineering, testing, Personal productivity and sustainability
Tags: book
Level: 2
Prerequisites: defaults
Aggregate: none
--->

# Working Effectively with Legacy Code

## Feathers, Michael, 2005

This is really the book that gives one hope that we can take legacy software that is very hard to modify and extend and through targeted incremental unit testing and refactoring, can turn it into better software while implementing and delivering new functionality at the same time.
This book is where the rubber meets the road combining unit testing and refactoring.
If one reads the book "Refactoring" by Martin Fowler and one felt a little uneasy about how this would apply to large nasty software projects, then Working Effectively with Legacy Code is the book to read.
What’s more, Michael mentions and reviews many of the object-oriented principles in Agile Software Development as well as other little bits of information that one would find in other great books about software development.
One can view this book as the logical culmination of the books "Refactoring" and "Test Driven Development" (TDD).
This book is packed with practical examples that show nearly every trick there is for refactoring nasty code to break dependencies and getting code into a unit test harness.
By the time one is done reading this book if one is not convinced of the need for unit testing and TDD, then one likely should not be developing software.

#### Contributed by [Roscoe A. Bartlett](https://github.com/bartlettroscoe)

#### Publication date:  March 28, 2019

<!---
Publish: yes
Categories: development, reliability, skills
Topics: refactoring, design, software engineering, testing, Personal productivity and sustainability
Tags: book
Level: 2
Prerequisites: defaults
Aggregate: none
--->

Improve wording some to remove 'bad'
Improve wording some to remove 'bad'
