As usual Uncle Bob made a very good job. This book is an application of all the theories that you can find in Agile Software Development, Principles, Patterns, and Practices. The book contains a lot of code, a lot of bad code that became good. The process to change code is well explained and driven by a lot of heuristic, code smell, practice and principle. A book that every programmer that would like to become a better programmer should read.