Résinage : kata du tennis
Contexte
Cette capsule s'avèrera un peu différente des autres étant donné qu'elle visera à faire l'intégration des concepts vus jusqu'à présent.
Pour ce faire, nous vous invitons à faire un kata portant spécifiquement sur le réusinage de code.
Le kata sélectionné est le suivant: https://github.com/emilybache/Tennis-Refactoring-Kata/tree/main/java.
Pour les curieux, Emily Bache est une figure bien connue dans la communauté du développement logiciel, en particulier dans le domaine du test logiciel et des pratiques Agiles. Elle est reconnue en tant que coach, formatrice et auteure. Je vous invite à explorer l'ensemble de ses répertoires de code pour trouver d'autres katas.
Énoncé
Le tennis a un système de notation plutôt excentrique, et pour les nouveaux venus, il peut être un peu difficile à suivre. La société de tennis vous a chargé de construire un tableau d'affichage pour afficher le score actuel pendant les matchs de tennis.
Vous pouvez en savoir plus sur les scores de tennis sur Wikipédia, ce qui est résumé ci-dessous :
- Un jeu est remporté par le premier joueur ayant accumulé au moins quatre points au total et au moins deux points de plus que l'adversaire.
- Le score en cours de chaque jeu est décrit d'une manière propre au tennis :
- "Love": 0
- "Quinze": 1
- "Trente": 2
- "Quarante": 3
- Si au moins trois points ont été marqués par chaque joueur, et que les scores sont égaux, le score est "Égalité" ("Deuce").
- Si au moins trois points ont été marqués des deux côtés et qu'un joueur a un point de plus que son adversaire, le score du jeu est "Avantage" en faveur du joueur en tête.
Vous devez simplement rapporter le score du jeu en cours. Les manches et les matchs ne sont pas pris en compte.
Exercice
Le code pour cet exercice se trouve dans ce dépôt Github.
- Sélectionner une version du code à réusiner (1-6).
- Écrivez une suite de tests de caractérisation.
- En partant de la version choisie, réusiner le code en utilisant un paradigme OO le plus possible.
Discussion
- Quelle version (1-6) du code avez-vous choisi et pourquoi ?
- Avez-vous pris connaissance de toutes les versions du code avant de commencer votre refactor ?
- Si oui, croyez-vous que cela a influencé votre design final et comment ?
- Avez-vous commis des erreurs lors du réusinage qui ont été détectées par les tests ?
- Auriez-vous pu accomplir votre réusinage grâce à des étapes plus petites ?
- Que diriez-vous à votre collègue s'il avait écrit ce code ?
- Considérez-vous que votre réusinage a apporté de la valeur au projet ? Pourquoi ?
- Considérez-vous votre solution plus complexe que le code initial ?
- Est-qu'une approche OO est la meilleure approche pour ce genre de problème ?
Solution
Une solution possible, incluant un exemple de test de caractérisation, est disponible dans la branche solution.