Well-factored code is about more than cleanliness. The code we write is ever-changing. The only thing that’s certain is that it will need to change again... and again and again. By adopting proven design patterns and principles, we can adapt to changes more easily and quickly. Refactoring turns into a trivial afternoon task instead of a month-long project. Swift’s expressiveness and flexibility can not only help us factor our code nicely from the start, but it allows us to approach design in exciting new ways.