Le principe Open-Closed, OCP, faisant partie des principes orientés objets SOLID, a été récemment critiqué par Jon Skeet et Robert Ashton qui pensent tout deux que le principe, tel qu'il est définit, cause plus de problèmes qu'il n'en résoud. Robert C. Martin, qui a identifié les principes au début des années 2000, cependant, le défend, soutenant que vous devez regarder la description complète et pas simplement la définition abrégée.
Le débat a commencé par un tweet de Jon, auteur de C# in Depth, remettant en question le principe :
"Je sais que douter des choses comme le OCP est proche de l'hérésie, mais il n'a simplement *jamais* eu de sens pour moi. (”I know that doubting things like OCP is pretty close to heresy, but it's just *never* made sense to me.)
Robert C. Martin dans une réponse a cité la définition dans le l'article OCP originel:
Les modules qui respectent le Principe Open-Closed ont deux attributs primaires.
1. Ils sont "Ouvert pour l'Extension". Cela signifie que le comportement du module peut être étendu. C'est à dire que nous pouvons faire se comporter le module d'une manière nouvelle et différente si les prérequis de l'application changent, ou pour correspondre à de nouveaux besoins.
2. Ils sont "Fermés pour la Modification". Le code source d'un tel module est inviolable. Personne n'est autorisé à en modifier le code source.
Dans cette réponse, Robert admet que cette définition est quelque peu exagérée mais soutient que l'article complet donne une explication plus modérée et que cet article plus récent a amélioré la définition.
Jon a répondu à Robert affirmant que la définition et description est trop vague et imprécise, ces types de principes doivent être définis de manière très soignée en utilisant la bonne terminologie pour en rendre l'essence claire. A la place, Jon préfère un concept similaire formulé par Alistair Cockburn, Protected Variation, qu'il pense avoir une meilleure description:
“Identifier les points de variabilité potentiels et créer une interface stable autour d'eux” (“Identify points of predicted variation and create a stable interface around them”)
Robert Ashton a aussi plus tard critiqué le principe qu'il accuse d'être la cause de trop de logiciels over-designés. Mais il voit aussi des domaines pour lesquels le principe est pertinent, i.e. ceux qui sont modifiés de manière répétée.
Il suit avec une explication des quatre principes SOLID restants.