Description
Write code so that you can add new things without changing the old stuff. This means that the behavior of existing entities can be extended without altering the source code, which is already developed and tested.
One of the big headaches in writing software is: adding new features can mess up the existing ones. The more you change old code, the more likely it is that something will break.
A well-designed component allows its behavior to be adapted by creating new code, rather on than changing the component itself, which can lead to software fragility and an increased likelihood of bugs.
