The terms open and closed are not something I often hear when discussing software engineering, so perhaps they could do with a little explanation.
Open means that we should be able to extend or adapt code by adding new behaviors and features. Closed means that we should avoid making changes to existing code, changes that could result in bugs or other kinds of regression.
These two characteristics might seem contradictory, but the missing ...