Most software professionals spend much of their time working with someone else's brutally imperfect code. When you consider the serious constraints that legacy code was created under, it's no surprise it looks so bad. The question is: now what? In Brutal Refactoring, Michael Feathers starts with code bases "as they are," not as "we pretend them to be" - and shows how to aggressively reshape them to make them maintainable and amenable to further development.
Brutal Refactoring takes the next steps beyond all previous refactoring books, including Feathers' own highly-praised Working Effectively with Legacy Code. Feathers shares new insights reflecting all he's learned in the eleven years since that book, and offers the first detailed practical advice on the unique nuances of system-wide refactoring.
Brutal Refactoring demonstrates Feathers' aggressive refactoring techniques through a series of exceptionally realistic case examples, introducing tactical "recipes" and high-level strategies for overcoming a wide range of legacy code challenges. Coverage includes:
Making intractable code understandable
Componentizing software factory and repository hubs
Sensing variables
Using in vitro test harnesses and production toggles
Mining runtimes
Decomposing heavily conditional code
Profiling good and bad code bases
Detecting and managing code hotspots
Uncovering patterns in code duplication
Performing domain discovery
Managing boundaries between object-oriented and procedural code
Using the Twist method to extract classes, and much more