25 Juin 2014

Dojo #2

Avec l’aide de Jean-Laurent de Morlhon, les équipes du WebCenter se lancent dans les dojos de code.

Ne cherchez pas le n°1… il n’est pas ici.

Voici l’énoncé de celui-ci :

CalculateurDeChaine

Avant de commencer

  • Ne lis pas le texte à l’avance
  • Focus !!, fais une tâche après l’autre. Un des apprentissages est de savoir travailler de manière très incrémentale.
  • Dans cet exercice, ne cherche pas à corriger les entrées invalides. Seul compte les entrées valides.
  • Le but est de s’entraîner, résoudre l’exercice n’est pas une fin en soit, ni le finir dans des temps records.

Enoncé

  1. Créer un calculateur à base de chaîne en entrée, par exemple avec une méthode int Add(String numbers)
    • La méthode peut prendre 0, 1 ou 2 nombres et retourne leur somme.
      • vous pouvez avoir en entrée des choses comme : """1" ou "1,2"
      • Si on vous passe une chaîne vide vous retournez 0
    • Commencez avec un test sur une chaîne vide, puis ajoutez la complexité graduellement, 1 chiffre, puis 2 etc…
    • La difficulté est d’écrire les bons tests, un bon moyen d’y arriver et de se forcer à faire les choses le plus simples possibles, afin de découvrir des tests auxquels on ne pensait pas.
    • Vous pouvez refactorer votre code après chaque test.
  2. Maintenant faites évoluer votre code de manière à prendre en compte un nombre quelconque de nombres.
  3. On doit pouvoir avoir des “retours chariots” entre les nombres plutôt que des virgules
    • L’entrée suivante est valide: 1\n2,3 (la somme vaut 6)
    • L’entrée suivante, elle, est invalide : 1,\n
  4. Supporter des délimiteurs différents
    • Pour changer un délimiteur, au démarrage de la chaîne on l’indique comme suis ://[delimiteur]\n[nombres] par exemple //;\n1;2 doit donner comme somme 3 avec un délimiteur par défaut qui est ;.
    • Oh, la ligne de définition d’un délimiteur est optionnelle, les scénarios précédents doivent toujours fonctionner.

Si vous en êtes ici, et que vous avez déjà passé le cap de la demi-heure, vous pouvez vous arrêter. Sinon vous pouvez continuer :

  1. Les nombres plus grand que 1000 sont ignorés, par exemple ajouter 2 à 1001 donne 2.
  2. Les délimiteurs peuvent avoir n’importe quelle longueur et plus juste un seul caractère. par exemple//[***]\n1***2***3 doit donner 6.
  3. Proposez plusieurs délimiteurs : //[delim1][delim2]\n par exemple //[*][%]\n1*2%3 doit retourner 6.
    • Vérifiez bien que vous pouvez utiliser des délimiteurs plus longs qu’un seul caractère.

Sujet disponible : https://github.com/AxaWebCenter/Dojo-2

dojo1

Technologies

  • 1 groupe en Objective-C / OCUnit
  • 1 groupe en Scala / ScalaTest
  • 5 groupes en C# avec MSTest
  • 1 groupe en Javascript avec Jasmine/Karma

Points Marquants

  • Développement incrémental
  • les tests avec du Random ne sont plus unitaires
  • Tests First
  • Pairing
  • Exercice facile, servant de base pour apprendre/pratiquer le développement dirigé par les tests.

– 1h de réalisation – 30 min de debrief –

Chaque réalisation ci-dessous a été faite en TDD. Je ne mettrai pas les fichiers de TU avec, ça ferait beaucoup …

Objective C :
C# :

C# avec du linq :
JavaScript :

Scala :

Share