This book is divided into three sections. Section 1 focuses on smells (problems) that occur within classes. Section 2 focuses on smells that occur between classes. Section 3 provides large programs for practicing refactoring in a variety of domains. Sprinkled among these sections, there are what I have called interludes ”brief excursions into analyzing the refactoring catalog in Refactoring: Improving the Design of Existing Code , by Martin Fowler et al. (hereafter referred to as Fowler's Refactoring ), or the patterns in Design Patterns by Erich Gamma et al. (similarly referred to as Gamma's Design Patterns ).
In the first two sections, the chapters consist mostly of smells (warning signs of potential problems) and challenges (exercises). I've used a standard format for describing smells:
This should help keep the smell pages useful for reference even when you've finished the challenges.
The challenges vary; some ask you to analyze code, others to assess a situation, still others to revise code. Code-based exercises have their code online at www.xp123.com/rwb .
Not all challenges are equally easy. The harder ones have "(Challenging)" between the challenge number and title;you'll see that these often have room for variation in their answers. Most exercises have solutions (or ideas to help you find solutions) in Appendix A. The later (code-based) exercises tend not to have answers, because they're asking you to modify programs.