Bowling Kata

Le bowling Kata est un classique de la programmation, il est destiné à apprendre la programmation en TDD. Si vous voulez travaillez en tant que programmeur, vous devez être capable de reproduire ce genre d’exercice pratiquement les yeux fermés. De plus en plus d’entreprises vous demandent de coder pendant l’entretien de qualification. On va vous demander de coder ce genre d’exercice. Il faut quasiment pouvoir le faire en très peu de temps, les yeux fermés.

L’exercice vient du site d’Uncle Bob TheBowlingGameKata

La solution est sous la forme d’un Powerpoint en langage Java.

Il faut bien maîtriser les règles de score au bowling. Vous pouvez vous référez à des sites français pour bien comprendre.

Le but est de montrer l’utilisation et la pertinence du Test Driven Development.

Dans la première partie l’auteur montre une première ébauche de design réalisé traditionnellement avec UML.


UML bowling kata

Attention il ne faut pas s’en servir comme base, c’est juste un (mauvais) exemple. Il veut démontrer l’efficacité du TDD qui permet d'aboutir à un design beaucoup plus simple.

Dans la seconde partie l’auteur utilise le TDD pour développer le comptage des points et grâce à cette technique il obtient une bien meilleure solution.

L’exercice est intéressant on voit bien grâce à l’animation les différentes étapes de refactoring du code.

Il va développer petit à petit son application en écrivant 5 tests.

1er Test: Vous avez tout manqué le score est à zéro.

2ème test : Vous avez à chaque fois touché une seule quille votre score total est de 20

3ème test : Dans la première frame vous avez fait un spare suivi par 3 quilles dans la suivante, toutes les autres frames sont à 0. Votre score total est de 16 (13 + 3)

4ème test : Dans la première frame vous avez fait un spare suivi par 3 et 4 quilles dans la suivante, toutes les autres frames sont à 0. Votre score total est de 24. (17 + 3 + 4)

5ème test : Strike à tous les coups, votre score est de 300.

La solution est beaucoup plus simple que le design présenté avec UML, elle n’utilise qu’un simple tableau !

C'est à vous de jouer !