- Sujet : Nearest Color
- Meetup
- Format : Mob
- Langage : TypeScript
- Nombre de participants : 5
Rappel du sujet
On cherche la couleur la plus proche, exprimée en hexadécimal dans un ensemble contenant les couleurs rouge (F00
), vert (0F0
) et bleu (00F
).
Déroulement
La session s’est déroulée en mob.
Anthony était driver.
Nous avons commencé par exprimer les types Component
et Color
, puis en faisant du Test-Driven Development, nous avons commencé à implémenter la fonction findNearest(Color): Color
.
Au fur et à mesure que les cas tests ont été ajoutés, nous avons eu besoin d’introduire la notion de distance entre Component
s.
Nous l’avons d’abord implémentée naïvement en soustrayant le charCode de la lettre représentant le nombre hexadécimal, mais la rupture entre 9
et A
nous a fait préférer un mapping explicite.
Une fois la distance entre 2 Component
s exprimée, la distance entre 2 Color
s s’obtient en sommant sur les 3 Component
s.
Reste alors à comparer les distances à rouge, vert et bleu pour déterminer la meilleure proximité.
Faute de temps, nous nous sommes arrêtés avant de terminer cette étape.
Rétrospective
- Un kata pas si simple, qui offre des approches différentes. Le kata ne guide pas assez pour découvrir la notion de distance (mais l’auteur va y remédier). Le kata force à découper.
- Un des participants a éprouvé des difficultés à suivre.
- Un kata très agréable, chouette de guider dans une langage (TS) différent de celui utilisé au quotidien (Python ou Java).
- Il manquait la dernière méthode et des refactorings. C’est très agréable de voir d’autres gens travailler, ça permet de voir comment ils raisonnent, prenant des directions différentes des nôtres. Un peu déçu de ne pas aller au bout. Permet de voir un TDD avec plus rigueur.
- Comme souvent, on n’a pas pu aller au bout du kata, et la tentation de finir se fait au détriment du refactoring, étape clé du cycle Red-Green-Refactor de TDD, c’est dommage que cette étape cruciale soit régulièrement sacrifiée.
ROTI
On a oublié de demander le ROTI 🙃.