Écrivez du code que les humains peuvent comprendre
Regroupez ce qui partage un sens commun
Les lignes d'une méthode forment naturellement des blocs logiques pouvant être encapsulés
Un seul contexte par fonction
Distinguez les contextes d'utilisation de vos fonctions et maintenez un seul niveau d'abstraction.
Limitez les arguments
Le nombre de cas d'utilisation d'une méthode est étroitement corrélé à son nombre d'arguments
Évitez la surcontextualisation
Tant que le nom reste clair et sans ambiguïté quant à sa finalité, préférez des noms courts et univoques.
Commentez intelligemment
Un bon commentaire ne doit pas substituer le code mais le compléter
Dissocier le contexte de la logique
Pour conserver un code réutilisable et modulable prenez l'habitude de dissocier la logique de son contexte
Les expressions combinées
Une expression combinée est une accumulation de condition au sein d'une même expression.
Attention à la négation
Préférez à la négation une forme affirmative
Limiter la longueur des lignes
La programmation n'est pas un exercice de concision
Be clear, not clever
Fuyez toute tendance narcissique à rendre votre code compliqué
La loi de Demeter
La loi de Demeter est une règle de conception souvent décrite de la manière suivante : "Ne parlez qu'à vos amis immédiats"
Variable intermédiaire
Une variable intermédiaire permet de contextualiser votre code
La distance sémantique
La distance sémantique est définie par l'écart qui existe entre le nom d'une méthode et les actions qu'elle réalise
Nombre magique
Un nombre magique est une valeur possédant une signification métier et présente en dur dans votre code
Couplage temporel
Le couplage temporel est un comportement contextuel d’une méthode qui n’est pas pertinent dans tous les cas d’utilisation
L'utilisation des flags
Un flag est un argument optionnel influant sur le comportement d’une méthode
Les blocs logiques
Un bloc logique est un ensemble de lignes partageant un sens commun
pure / impure
Une méthode impure possède des effets de bord, toutes ses dépendances ne sont pas déterministes mais caractérisées par l’état de l’application