オープン・クローズドの原則, OCPは、オブジェクト指向原則SOLIDの一部だが、 最近Jon Skeet とRobert Ashton の両氏に批判されている。両氏は、この原則は、定義されているように、効果よりも害のほうが大きいと信じている。2000年初頭にこの原則を認識したRobert C. Martin氏は、しかしこの原則を擁護し、短い定義をではなく、完全な記述を読む必要があると主張している。
この議論は、C# in Depthの著者であるJonがツイートで、この原則への疑問から始まった。
「OCPのようなものを疑うのは、異端にかなり近いことはわかっているが、その原則は、私には全く意味がありません。」
Robert C. Martin氏は、答えの中で、元のOCP の記事における定義を振り返っている。
オープンクローズの原則に準拠しているモジュールには、2つの主要な属性がある。
1. それらは、「拡張には、オープン」である。この意味は、モジュールの動作は、拡張できる、ことである。我々は、モジュールをアプリケーション変更の要求に従った、新しく違う動きにするか、新しいアプリケーションのニーズに合うように動作するようにできる。
2. それらは、「変更に閉じられている」。そのようなモジュールのソースコードは、犯すべからずである。誰もそれに関するソースコードを変更することは、許されない。
答えの中で、Robertは、定義が少々誇張されていることを認めているが、また完全な記事がより無理の無い説明をしており、彼の新たしい記事が定義を改善した、と言っている。
Jonは、 Robertの答えに対して、次のように主張している。その定義や記述が余りに曖昧で、不明確であり、この種の原則は、その本質を明らかにするために正しい用語を使って、非常に慎重に定義されなければならない。その代わりに、彼はAlistair Cockburn氏によって造り出された保護されたバリエーションのほうがより良い記述だ、と考えている。
「予測される変化点を特定し、その周りに安定したインタフェースを作成する」
Robert Ashton氏も後で、この原則が多くの設計過剰なソフトウェア部品の原因である、と批判している。しかし、彼はこの原則が意味のある領域もある、と考えている。例えば、繰り返し変更される領域。
彼は次にSOLID原則の残りの4つ を検討している。