The last section of this book provides you with programs to refactor.
Chapter 13 is a simple course registration system that uses a database. Refactoring code and databases together is an emerging area of study; we'll find plenty of duplication to fix in the code.
Chapter 14 looks at a simple game. Even a small program embodies a lot of decisions and has room for a number of smells. We'll touch on test-driven development as well.
Chapter 15 considers some challenges in balancing responsibility. We'll use refactoring to explore three different approaches to an online catalog. Even with only three or four classes, we can arrive at radically different solutions.
Chapter 16 tackles a graphical user interface (GUI). This example demonstrates a common problem: You want unit tests so you can safely refactor, but you need to refactor to make the code testable.
Finally, Chapter 17 suggests some exercises that you can apply in your own work and provides suggestions for further reading.