BT
x Votre opinion compte ! Merci de bien vouloir répondre au sondage InfoQ concernant vos habitudes de lecture !

Le principe Open-Closed défié

par Jan Stenberg , traduit par Olivier Bourgain le 18 juin 2013 |

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.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Et si le débat n'y était pas by François Saulnier

Open-closed principle...
La question à se poser est j'utilise un language objet, que suis je en train de coder un DAO, une IHM, ... bref les principes objets sont ils utiles dans ce contexte, pas sûr.
Est il utile de vouloir appliquer de manière systématique une "recette de cuisine" ? Mon avis : non. Mieux vaut réfléchir un minimum.
Merci pour le troll

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

1 Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2014 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT