Nommages : réduire sa charge cognitive
Apéro PHP 18/04/2023
Deux activités différentes
- Résolution de problèmes ⇒ mathématiques
- Compréhension du code ⇒ linguistique
... et pas valorisées à la même hauteur
Compréhension du code
Aider la mémoire court terme
- Structurer son code selon les standards
- Conventions (PSR-12 !)
- Bien choisir repères (commentaires, noms)
- Supprimer pollution (code mort ou commenté, fautes, décors, ...)
Aider la mémoire de travail
- Découper
- Activer mémoire long-terme
- Eviter d'empiler
- Renommer dès l'analyse
Aider la mémoire long terme
- Exercices sur design pattern (un par un !)
- Ecrire des docs
- Lire du code (open source)
- Développer :)
Astuce bonus
Obstacles à la compréhension
- (No comments or insufficient comments)
- Meaningless classes / methods / variables names
- Large number of lines of code in a class / method
- Unconsistent coding styles
- Navigating inheritance hierarchies
Xia and al. TSE.2017.2734091
Nommages : à ne pas faire
- Pas d'humour
- Pas de mystère
- Pas d'abbréviation (sauf connues de tous)
- Pas de négation (ex: $notEmpty)
Nommages : à faire
- En anglais (comme PHP)
- Noms prononçables
- Donner des indices (Design Pattern, utilité, ...)
- Utiliser des termes issus du métier
Conventions selon type
- Classes, Propriétés, Variables ⇒ noms
- Méthodes, Fonctions ⇒ verbe infinitif
- Evènement ⇒ participe passé (ex: OrderValidated)
- Valeurs d'Enum ⇒ adjectif ou nom
- Booléens ⇒ préfixe (ex: isActive ou hasChildren)
Méthodes / fonctions
- Maxi 5 arguments
- Arguments aident pour les renseigner (ex: add(int $seconds))
- Préfixe portant du sens :
- getXxx : un seul élément, exception si non trouvé
- findByXxx : array
Longueur : public = nom court, private = nom long
Variables
- Maxi 4 mots
- Porter du sens (ex: $user1, $user2 ⇒ $sender, $receiver)
- Pas de notation hongroise (ex: $iMax, $strNom)
Longueur : portée grande = nom long, portée courte = nom court
Aider les autres
API, message broker, exports, ... :
Communiquer sur des noms neutres
Merci !
Des questions ?
Sources
- Clean code - Robert C. Martin
- The programmer's brain - Felienne Hermans