Open/Closed Principle
"The principle stated that a good module structure should be either open and closed. Closed, because clients need the module's services to proceed with their own development, and once they have settled on a version of the module should not be affected by the introduction of new services they do not need. Open, because there is no guarantee that we will include right from the start every service potentially useful to some client."
– Bertrand Meyer, Object-Oriented Software Construction
Closed with respect to X means that clients are not affected if X changes. Martin Fowler states that:
Note
Published Interface is a term I used [...] to refer to a class interface that's used outside the code base that it's defined in. The distinction between published
and public
is actually more important than that between public
and private
. The reason is that with a non-published interface you can change it and update the calling code...