Life doesn't stand still.
Neither can the code that we write. In order to keep up with today's near-frantic pace of change, we need to make every effort to write code that's as looseas flexibleas possible. Otherwise we may find our code quickly becoming outdated , or too brittle to fix, and may ultimately be left behind in the mad dash toward the future.
In Reversibility, we talked about the perils of irreversible decisions. In this chapter, we'll tell you how to make reversible decisions, so your code can stay flexible and adaptable in the face of an uncertain world.
First we need to look at coupling the dependencies among modules of code. In Decoupling and the Law of Demeter we'll show how to keep separate concepts separate, and decrease coupling.
A good way to stay flexible is to write less code. Changing code leaves you open to the possibility of introducing new bugs . Metaprogramming will explain how to move details out of the code completely, where they can be changed more safely and easily.
In Temporal Coupling, we'll look at two aspects of time as they relate to coupling. Do you depend on the "tick" coming before the "tock"? Not if you want to stay flexible.
A key concept in creating flexible code is the separation of a data model from a view, or presentation, of that model. We'll decouple models from views in It's Just a View.
Finally, there's a technique for decoupling modules even further by providing a meeting place where modules can exchange data anonymously and asynchronously. This is the topic of Blackboards.
Armed with these techniques, you can write code that will "roll with the punches."