Steeven Ramaheridianina
POO
Quelques règles simples pour écrire vraiment en objet.
Certaines me paraissent un peu trop drastique, qu'en pensez-vous ?
Partagé par Steeven Ramaheridianina
il y a plus de 3 ans
Quelques règles simples pour écrire vraiment en objet.
Certaines me paraissent un peu trop drastique, qu'en pensez-vous ?
Une source primaire : williamdurand.fr/...
Edit : l'article mentionne ces informations.
""
Object Calisthenics are programming exercises, formalized as a set of 9 rules invented by Jeff Bay in his book The ThoughtWorks Anthology. The word Object is related to Object Oriented Programming. The word Calisthenics is derived from greek, and means exercises under the context of gymnastics. By trying to follow these rules as much as possible, you will naturally change how you write code. It doesn’t mean you have to follow all these rules, all the time. Find your balance with these rules, use some of them only if you feel comfortable with them.
""
On peut par exemple restreindre la collection à l'insertion mais pas à la suppression.
En java, par exemples les collections sont mutables par défaut. Par ex l'interface List expose des méthodes pour ajouter ou modifier des éléments.
La surface d'attaque et les risques de régressions sont augmentées quand les collections ne sont pas wrappées.
Wrapper les collections peut aussi inciter le développeur à nommer le contrat de sa classe (DDD , ubiquitous language).
Ex.
// primitive collection just do collection stuff
shoppingCartItems.add(product);
shoppingCartItems.add(product);
// wrapped collection can be extended with domain semantic and behaviour
shoppingCart.add(product, 2);
shoppingCart.applyDiscountCode("COMPAGNON");
Dans le 2ème exemple la logique d'appliquer un discount n'est qu'à un seul endroit (à l'intérieur de la clases ShoppingCart). Si on manipulait une collection primitive dans tout l'appliacation, cette responsabilité serait déléguée aux clients de la collection qui pourraient faire n'importe quoi avec (leaky abstraction en.wikipedia.org/...