Dans cette vidéo, je vous propose le premier kata pour vous entraîner à mieux développer. Je parlais de l’importance des katas dans l’article Etes-vous certain d’écrire du bon code ? Découvrez les katas.
Au début de la vidéo, je présente également rapidement TDD, la méthodologie de développement basée sur les tests (pour en savoir plus sur les tests unitaires, je vous invite à découvrir la vidéo précédente Introduction pratique aux tests unitaires.
Ce premier kata est simple. Pour le réaliser, je vous conseille de lire le scénario et de commencer à coder par vous-même avant de regarder la vidéo en intégralité.
Scénario du kata
Calculatrice à partir d’une chaîne de caractères
1. Créer une classe calculatrice qui propose une méthode int Add(string numbers)
- La méthode peut prendre 0, 1 ou 2 nombres en entrée et va retourner la somme de ces nombres. La chaine vide retourne 0.
Exemples : « », « 1 », « 2,5 »
- Démarrer avec le cas le plus simple, c’est-à-dire une chaine vide puis passer à un nombre et ensuite à deux nombres
- Essayer d’écrire le code le plus simple possible
- Refactoriser après chaque test en succès
2. Autoriser une ensemble illimité de nombres pour la méthode Add
3. Autoriser le retour chariot entre les nombres (au lieu de la virgule)
Exemples : « 1\n2,3 » (résultat = 6)
Autre exemple, ceci n’est pas accepté : « 1,\n »
4. Accepter différents délimiteurs
- Pour changer de délimiteur, la première ligne doit commencer par « //[delimiteur]\nnombre… »
Exemple : « //;\n1;2 »
- La première ligne est optionnelle, votre algorithme doit fonctionner sans (avec un délimiteur par défaut)
Qu’avez-vous pensé de ce kata ?
Laissez-moi un commentaire pour m’indiquer ce que vous pensez de ce kata. Qu’est-il possible d’améliorer selon vous ?
D’après l’énoncé la méthode prend 0, 1 ou 2 nombres. Les tests Add_ChaineAvecDeuxRetoursChariotEtQuatreNombres_RetourneLaSomme et Add_ChaineAvecPlusieursNombres_RetourneLaSomme sont par conséquent faux non ?
Aucun test avec en entrée une chaîne ne pouvant être parsé en int, dommage 😡