Maintenant que vous savez ce qu'est le Test Driven Development, nous allons pouvoir parler de la méthodologie à appliquer pour faire proprement du TDD.
Présentation de la méthode
Cette méthode s'appelle "Red, Green, Refactor" et elle est composée de 3 étapes que l'on va répéter inlassablement !
Red
La première étape, c'est la rédaction d'un test. Le code correspondant n'existe pas encore donc ce test va échouer et donc rester rouge...
Green
La seconde étape, c'est l'écriture du code. Dans cette étape, on ne se concentre que sur une seule chose : faire passer notre test.
Peu importe le style du code, s'il y a un peu de répétitions ou si ce n'est pas parfait, votre seul objectif à cette étape, c'est de faire passer le test au vert.
Refactor
Pendant cette dernière étape, on refactorise notre code et nos tests. L'objectif ici est d'avoir un œil attentif aux améliorations que nous pouvons faire. Est-ce qu'il y a du code dupliqué ? Est-ce que ma classe a bien une seule responsabilité ? Est-ce que ma méthode fait bien ce que son nom indique qu'elle fait ?
C'est l'occasion d'améliorer la qualité de votre code !
Faites des petits pas !
Avec cette méthode, vous allez donc parcourir un cycle. Dès que vous atteignez la dernière étape, vous revenez à la première.
Ce cycle, il doit être très court. En gros, une fois que vous maîtrisez la méthode, vous ne devriez pas mettre plus de 5 minutes à parcourir le cycle !
5 minutes ?! Mais on ne peut rien coder en 5 minutes !
Si ;) ! Vous pouvez coder des toutes petites choses. Et c'est justement le but de la méthode, chaque cycle représente un tout petit pas. Souvent, votre premier cycle sera d'écrire un test qui contrôle l'existence d'une classe, puis vous créerez la classe.
L'idée c'est d'écrire le test qui vous permet de rédiger le moins de code possible !
Mais c'est ridicule ! On n'a pas besoin d'un test pour simplement créer une classe.
C'est sûr que ça paraît un peu bizarre au début, mais vous vous y ferez vous verrez ! L'avantage de faire des tous petits pas, c'est que le risque d'erreur est quasi inexistant et vous avancez du coup toujours en étant couvert.
OK mais si je fais des tests toutes les 5 minutes pour tester des tous petits trucs, je vais avoir des tonnes de tests !
Eh non ! Car il y a la troisième étape : refactor. Cette étape sert aussi à refactoriser vos tests. Au fur et à mesure, certains vont devenir inutiles. Par exemple, le test qui permet de tester l'existence de votre classe va vite être inutile, car vous allez utiliser la classe dans d'autres tests, donc ces autres tests confirment que la classe existe.
Autrement dit, votre suite de tests va évoluer en continu, mais à chaque instant, elle reflète exactement ce que fait votre code !
Avantages
Pour finir de vous convaincre du bien-fondé de cette méthode, je vous propose de vous donner deux avantages de la méthode :
Vous n'êtes pas parfait !
Il faut l'admettre, dans une grande majorité des cas, le code que vous écrivez en premier n'est pas parfait. Il mérite d'être revu, corrigé, réorganisé. En même temps, personne ne joue un morceau de guitare parfaitement du premier coup ou n'écrit un roman d'une traite. En développement, c'est pareil.
Le problème, c'est que les développeurs n'ont pas toujours en tête de revenir sur leur code pour l'améliorer. Or c'est essentiel, car vous allez vivre avec votre code ! En suivant cette méthode, vous vous donnez une occasion de le refactoriser toutes les 5 minutes ! Vos chances d'écrire du code de qualité sont largement démultipliées !
Refactoriser dans le vert
La refactorisation arrive après l'étape green. Tous les tests passent ! Avec cette méthode, vous ne refactorisez que dans un code testé et fonctionnel. Donc au moindre problème causé par la refactorisation, vos tests vous alerteront. Vous repasserez à l'étape red et n'aurez plus qu'à dérouler tranquillement : green, puis refactor !
Cette méthode vous apprend à ne refactoriser que de vert à vert.
En résumé
La méthode Red, Green, Refactor se compose de trois étapes :
Red : On écrit un test qui échoue.
Green : On résout le test en écrivant le code correspondant.
Refactor : On refactorise le code ET les tests.
Le cycle Red, Green, Refactor doit être le plus court possible. L'objectif est de rédiger le minimum de code possible à chaque cycle.
La méthode Red, Green, Refactor est un peu plus qu'une méthode, c'est une toute autre manière de développer et je vous garantis que vous allez adorer ! Dans le prochain chapitre, nous allons utiliser cette méthode pour rajouter une fonctionnalité à notre application : le tie break !