mardi 7 avril 2015

Coding Dojo TDD : Scala / Java

Les équipes que je coach ont décidé de mettre en place des Coding-Dojo pour apprendre le TDD

Le projet est en JAVA mais par curiosité j'ai eu envie de mettre mes compétences en SCALA à l'épreuve de ces DOJO

Ça a été pour moi l'occasion de comparer la différence de productivité entre ces deux langages mais aussi d'en tirer quelques enseignements notamment sur la nécessité de disposer d'une bonne compréhension du besoin et des critères d'acceptance avant de se lancer dans le dev



Calculer le score d'une partie de bowling

L'explication des règles est assez laborieuse, tout le monde croit les connaître... et assez vite je me rend compte que certains (dont moi) se lancent dans le code avant une totale compréhension du besoin

Le PO qui est en moi se ressaisit et j'attaque règle par règle en refactorant à chaque fois

1. La méthode doit faire la somme de tous les scores

Le code est très simple, je fais juste la somme de la séquence de scores


2. Si je fais un Strike alors j'ajoute au score (10) les deux scores suivants

Le code s'enrichit, je passe en récursif et j'utilise le pattern matching pour directement capturer la séquence Strike + 2 scores suivants : Seq(10, a, b, c@_*)

A ce stade le pattern matching prouve son intérêt, côté Java les développeurs commencent à se battre avec des if/else difficiles à lire

3. Si je fais un Spare alors j'ajoute au score (10) le score suivant

Il me suffit d'ajouter un cas dans le pattern matching en utilisant un guard, par contre ça ne marche pas du premier coup, normal la présence des 0 fausse les calculs - je dois aussi gérer ce cas :

L'heure est passée, côté Java on galère pas mal à sortir un code propre et lisible, côté Scala on s'éclate !

Aucun commentaire:

Enregistrer un commentaire