Software craft
TDD
Voir la page sur les tests
Clean code
- La règle du "boy-scout" => quand on touche une portion de code, la laisser dans un état meilleur que celui où on l'a trouvée (progressivement améliorer le code à chaque feature)
- Principes pour un code lisible et évolutif
- Le code n’est-il pas trop complexe pour ce qu’il fait ? Peut-on le simplifier ? Les abstractions et autres généralisations introduites le sont-elles à bon escient ? Est-ce qu’on n’anticipe pas trop sur un possible futur ?
- Comprendre l'intention du code à la première lecture (ce que le code cherche à faire) => avec le nommage approprié, organisation/découpage du code, et les commentaires
- Eviter la duplication (si pertinent)
- Le design mis en place autorise-t-il suffisamment de liberté pour la suite ?
BDD (Behavior-driven development)
= co-construction des spécifications, permet :
- une compréhension partagée entre tous
- des critères d'acceptation pour le développement
- des tests de non-régression
- une documentation vivante et évolutive (avec ces mêmes tests)
Principes :
- Assurer la présence simultanée de trois types de rôles (les "tres amigos")
- un product owner qui représente le besoin (+ recherche la valeur pour les utilisateurs)
- un développeur pour la mise en oeuvre (+ représente la faisabilité technique)
- Un testeur pour challenger les deux autres
- Faire des ateliers de spécifications avec ces trois personnes
Automatisation des scénarios :
- Syntaxe Gherkin
- Syntaxe plus formelle pour la rédaction des scénarios. Peut être interprété par des outils de tests automatisés.
- A l'intérieur de fichiers nommés les "fichiers de features" ("feature files"). Un fichier = une feature, qui contient une succession d'exemples/de cas.
- En anglais : given > when > then
- En français : Sachant que/Etant donné > Quand/Lorsque > Alors/Donc
- Exemple :
Example: Aucune remise en dessous de 50 € d’achat
Given un panier avec 2 articles pour un total de 49 €,
When le client consulte son panier,
Then le total n’inclut aucune remise
Pair & mob programming
Comment binômer
- Deux rôles classiques : pilote (driver) qui contrôle la machine, et copilote (navigator) qui n'agit pas sur la machine
- Alternance fréquente recommandée (itérations de 5 à 10 minutes)
- Se détacher de son ego
Styles de binômage
- Ping pong : coupler pairing et TDD => alterner à chaque fois qu'on termine une phase rouge (une personne écrit un test en échec puis l'autre implémente)
- Navigation strong style : une personne va exposer son idée et l'autre va l'implémenter
- Silent pair programming : les deux personnes ne sont pas autorisées à parler, écrire ou dessiner ; seul le code peut être utilisé pour communiquer
- Evil twin pair programming : variante du ping-pong pair programming. Proposer une implémentation avec le plus de mauvaise foi possible pour mettre en avant les cas limites
Pourquoi binômer ?
- Apprendre et progresser plus rapidement : sur le code, l'IDE, l'historique de l'application
- Transmettre l'info : pour éviter le bus factor
- Se motiver et s'entraider
Mob programming
(ou ensemble programming)
= une équipe entière sur une seule tâche sur un seul clavier
Sources
- Livre Software Craft de Cyrille Martraire