Summary
In this chapter, you looked at some of the most common code smells as well as the most common refactorings to fix them. You saw, step by step, how to perform each of the refactorings on our project and how having a good test suite enables us to perform such refactorings with confidence. Test-driven development and refactoring go hand in hand and are invaluable tools in any developer's toolbox. In the next chapter, we will take a look at testing code interactions using mock objects.