Il n'y a aucune garantie avec le TDD de tomber sur un algo performant. Le but c'est vraiment de faire de la conception émergente et d'être certain que ton code est testé.
Si tu as déjà un algorithme en tête, ce n'est donc pas forcément la bonne (/meilleure) solution. Typiquement, pour faire du tri de valeurs, il y a d'excellents algorithmes qui ont été prouvés et éprouvés, dont la complexité et l'encombrement mémoire sont connus. TDD est une des façons possible de faire émerger un algorithme. C'est loin d'être la seule. Ça fait pas mal penser aux concepts de minimums locaux, on peut tomber en TDD sur une solution effective mais pas efficace. Le cas que tu présentes tient en effet plus de l'algorithmie que d'autre chose. Les premiers pas sont faciles à visualiser, pour la suite cela se corse en effet quelque peu. Ceci étant, en distinguant les cas suivants tu dois pouvoir t'en sortir : - Tableau vide - Tableau avec une seule valeur - Tableau à deux dimensions avec les combinaisons des valeurs a b c d telles que b > c, puis c > b, d > b, d < b, d > c, d < b (ça en fait quelques unes déjà) ... Jusqu'à ce que tu obtiennes un programme qui marche. Dernier point, dans ton cas, tu cherches à tester une fonction, qui prend en paramètre un tableau et retourne une liste. Pourquoi vouloir tester tes méthodes privées ? Il te suffit de tester la sortie fonction de l'entrée, peu importe l'implémentation interne non ? Le sam. 6 févr. 2016 à 09:20, Fabien. <[email protected]> a écrit : > Bonjour, > > Sur certains kata, par exemple le diamond, on faire un test simple > (diamond(1) qui retourne "A"), on ajoute le 2, en faisant du copié collé et > un if, le 3, un pattern commence à émerger et on peut refactorer vers une > solution générale. > > Sur d'autres kata, je n'arrive pas du tout à faire émerger un algo de > cette façon. Peut etre parce que je ne suis pas encore au point sur la > méthode, peut-être parce que TDD ne fonctionne pas dans ce cas ? > > Voici un exemple : > > -On part d'un tableau à deux dimensions d'entier de taille quelconque, ou > chaque ligne est croissante, et chaque colonne est croissante > -On doit retourner un tableau d'entiers à une dimension, contenant toutes > les valeur du premier, ordonnées. > > Faire l'algo sur papier, et l'implémenter ensuite, éventuellement en > test first (mais du coup plutot pour tester les methodes privées qui sont > les etapes de base de l'algo, pas vraiment du TDD), c'est facile. > En TDD, je n'arrive pas vraiment à converger vers une solution > intéressante. Quelqu'un a des pistes de réflexion ? > > Fabien. > > -- > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > "Software Craftsmanship Toulouse". > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > concernant, envoyez un e-mail à l'adresse > [email protected]. > Pour obtenir davantage d'options, consultez la page > https://groups.google.com/d/optout. > -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Software Craftsmanship Toulouse. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse [email protected]. Pour plus d'options, visitez le site https://groups.google.com/d/optout .
