Les plus petits diviseurs d'un nombre

C’est un kata expliqué par Uncle Bob.

Il faut essayer de le réaliser avant de regarder la solution.

Le but de ce kata est de rechercher tous les plus petits diviseurs d’un nombre. On remarque que les plus petits diviseurs sont des nombres premiers.

Le kata est assez court car il suffit de créer une seule fonction Generate qui prend en paramètre un nombre et qui retourne la liste de tous ses plus petits diviseurs.

En C# :

IEnumerable<int> Generate(int value)

Si on passe 12 à la méthode elle retournera 2 2 3.

Si on passe 15 elle retournera 3 5.

L’exercice est intéressant à pratiquer pour apprendre le Test Driven Development.

On voit que dans l’explication de référence il construit 7 tests avant d’arriver au résultat final.


Les tests qui sont écrits avant d’arriver au résultat.

Entrée : 1 - Résultat : liste vide

Entrée : 2 - Résultat : 2

Entrée : 3 - Résultat : 3

Entrée : 4 - Résultat : 2 2

Entrée : 6 - Résultat : 2 3

Entrée : 8 - Résultat : 2 2 2

Entrée : 9 - Résultat : 3 3

Il considère chaque test comme un exercice à résoudre sans s’intéresser au résultat final. Il est dur de s’empêcher de coder la solution finale dès le quatrième test.

En pratiquant de genre d’exercice on devient vite un bon programmeur car un seul exercice en contient finalement 7. Il faut coder toutes les solutions intermédiaires.

Le terme Kata vient des arts martiaux japonais et désigne un exercice qui doit être sans cesse répété pour être maîtrisé. La répétition de l’exercice est vue comme une forme d’apprentissage.