Accueil > Journal, TDD > Javascript TDD n°1

Javascript TDD n°1

Dans ce classique PrimeFactors kata, plusieurs versions du code production peuvent émerger : la double boucle, la voie récursive et, puisque Javascript le permet, une approche plus fonctionnelle.

1. Ouverture

Capture d’écran 2013-03-10 à 18.11.05

Capture d’écran 2013-03-10 à 18.23.00

Ce premier test permet de nous mettre d’accord sur notre objectif. Il simule une discussion avec un expert du métier qui nous expliquerait quoi attendre de la décomposition d’un nombre en prenant un exemple au delà des premiers chiffres. Nous commenterons bientôt ce test pour passer à des étapes plus simples mais pour l’instant nous allons juste l’écouter.

Ce premier retour nous invite à créer la fonction primeFactorsOf.

Capture d’écran 2013-03-10 à 18.30.26

Capture d’écran 2013-03-10 à 18.31.39

Ce nouveau retour nous plonge dans le sujet. Un test d’un cas plus simple va nous permettre de nous mettre sur les rails du kata. En considérant que le nombre 1 ne se décompose pas en facteurs premiers, nous écrivons un autre test qu’il est facile de faire passer en renvoyant naïvement un tableau vide. En commentant notre test ultime, nous avons notre premier vert.

Capture d’écran 2013-03-10 à 18.29.03

Capture d’écran 2013-03-10 à 18.39.31

2. Développement

Notons que nous avons déjà de la duplication dans les tests. Nous sommes au vert et cela pourrait être un bon moment pour la supprimer. Néanmoins comme notre test ultime est commenté, nous n’aurions pas forcément de retour de tests nous confirmant que nous n’avons rien cassé. Je décide donc d’attendre encore un peu, et je plonge dans l’étude des facteurs de 2.

Selon vos préférences, votre code pourrait évoluer selon des chemins assez différents.

Il y a la voie des boucles

Capture d’écran 2013-03-10 à 23.38.09

la voie récursive

Capture d’écran 2013-03-10 à 23.40.37

Et une voie encore récursive légèrement différente  qui pourrait mener à un code d’allure plus fonctionnelle.

Capture d’écran 2013-03-10 à 23.42.16

Nous commençons à avoir de la duplication un peu partout. C’est à dire dans le code de production et dans le code de test. Cette dette s’est accumulée plus rapidement dans le code de test et il est temps de la payer.

Capture d’écran 2013-03-11 à 08.16.16

Une première modification nous permet de réduire l’empreinte visuelle de la duplication sans la supprimer. Il ne reste plus qu’à, par exemple, boucler sur une collection.

Capture d’écran 2013-03-11 à 08.29.06

La duplication est aussi présente dans le code de production. Dans les trois chemins présentés plus haut, le chiffre 2 est présent plusieurs fois. Si par exemple je continue avec le dernier des trois, j’ai plusieurs options pour la supprimer. J’en suis une qui en deux coups m’amène à un code que je trouve élégant.

Capture d’écran 2013-03-11 à 08.46.56

3. Fin de partie

Toutes nos pièces sont maintenant confortablement installées et nous voilà à deux coups de conclure. Le 3 passe sans difficulté et nous ouvre la voie pour le 5 qui termine par un second appel récursif. Notre test ultime est maintenant libre 🙂

Capture d’écran 2013-03-11 à 08.54.00

Capture d’écran 2013-03-11 à 08.54.40

Publicités
Catégories :Journal, TDD Étiquettes : , , ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :