Hommage
Origines
POO

Alan Kay retrace l’histoire des innovations qui ont été faites au Xerox PARC dans la fin des années 60 et début 79.
La présentation est faite sur une émulation de Smalltalk de l’époque à partir de données qui ont été récupérées de disques durs jetés par Xerox.


Partagé par Marc Bouvier
il y a plus de 2 ans
1

Pour ajouter un commentaire, tu dois te connecter ou créer un compte.
POO

Quelques règles simples pour écrire vraiment en objet.
Certaines me paraissent un peu trop drastique, qu'en pensez-vous ?


il y a plus de 3 ans
2

Derniers commentaires :
Marc Bouvier il y a plus de 3 ans - modifié il y a plus de 3 ans
L'article ne mentionne pas qu'à l'origine il s'agit d'exercices qu'il ne convient pas forcément d'appliquer tout le temps.
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.
""
Marc Bouvier il y a plus de 3 ans - modifié il y a plus de 3 ans
Pour ce qui est de la règle des collections, je pense que l'intéret est de réduire l'interface uniquement au comportement métier attendu.
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/...
Pour ajouter un commentaire, tu dois te connecter ou créer un compte.
Artisan Développeur utilise des cookies afin de t'offrir les meilleurs services. En poursuivant ta navigation, tu acceptes l’utilisation de cookies. En savoir plus