14 Wrapping up

 

This chapter covers

  • Reflecting on the journey of this book
  • Exploring the underlying principles
  • Suggesting how to continue this journey

This chapter first takes a brief look at what we have covered in this book to recall the long journey we have been on. Then I explain the central ideas and principles that led me to this content and how you can employ these principles to solve similar problems. Finally, I provide recommendations for how your journey can naturally continue from this stepping stone.

14.1 Reflecting on the journey of this book

When you started this book, you likely had either no view of refactoring or a very different view than you do now. My hope with this book is to have made refactoring accessible and actionable for more people. I wanted to lower the entry bar to complex concepts such as code smells, utilizing the compiler, feature toggling, and many others. We color the world with the language we use. Therefore I hope I have enriched your vocabulary through the titles of rules, refactoring patterns, and chapters.

14.1.1 Introduction: Motivation

In the first two chapters, we explored what refactoring is, why it is essential, and when to prioritize it. We laid the foundation by defining the goal of refactoring: reducing fragility by localizing invariants, increasing flexibility by reducing coupling, and understanding the software’s domain.

14.1.2 Part 1: Making it concrete

14.1.3 Part 2: Widening the horizon

14.2 Exploring the underlying philosophy

14.2.1 Searching for ever-smaller steps

14.2.2 Searching for the underlying structure

14.2.3 Using the rules for collaboration

14.2.4 Prioritizing the team over individuals

14.2.5 Prioritize simplicity over completeness

14.2.6 Using objects or higher-order functions

14.3 Where to go from here

14.3.1 Micro-architecture route

14.3.2 Macro-architecture route

14.3.3 Software quality route

Summary

sitemap