Devoxx France 2014 – Les Object Calisthenics

Vendredi dernier, j'ai assisté à la présentation rapide de Guillaume Duquesnay (lien vers son blog) à Devoxx France 2014.
Le sujet est la programmation des Object Calisthenics qui définit une manière d'écrire du code.

Voici une liste non exhaustive des contraintes définissant cette méthode :

  • Ne pas utiliser de ELSE : son utilisation pourrait être révélateur d'une méthode ayant plusieurs intentions.
  • Pas plus d'un niveau d'indentation : cela améliore la lisibilité du code, ainsi que sa testabilité et sa maintenabilité.
  • Encapsuler chaque type primitif (int, long ...) dans une classe dédiée : cela définit clairement le sens de la donnée et permet une programmation plus orientée objet (en Java, un type primitif n'est pas un objet).
    Exemple
     :
        class NombreDeJoueurs {
            int valeur;
        }
  • Un seul point par ligne : cela facilite la lecture du code.
  • Pas d’abréviation : cela donne du sens à la variable et diminue les ambiguïtés survenant surtout lorsque le nom de la variable n'est composé que d'une seule lettre.
  • Pas de collection de premier ordre (Collection, List ...) mais des classes de collection.
    Exemple
    :
        class PaquetDeCartes {
            List<Carte> cartes;
        }
  • Utiliser au maximum 2 attributs de classe/d'instance. Au delà, la classe a de bonnes chances de faire plusieurs choses distinctes => il faut la découper en plusieurs classes.
  • Ne pas utiliser de getter : cela évite de briser l'encapsulation des données par leur exposition en dehors de la classe.

Le bilan dressé par Guillaume est que ces contraintes donnent plus de sémantiques aux classes et mènent à une programmation fonctionnelle, expressive et réactive. Cela lui a permis de redécouvrir les design patterns, notamment le pattern Command. Pour conclure, il nous conseille de tester cette méthode en appliquant strictement les règles pendant au moins 20 heures, afin de pouvoir vraiment en comprendre les avantages et les inconvénients.

Un commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.