Le refactoring expliqué à ma fille

Convaincu que la capacité à coder n'est pas moins intéressante que celle de lire, écrire ou compter, je ne manque jamais une opportunité de montrer à mes filles ce qui peut se cacher derrière un logiciel. Et, quand l'occasion se présente, je leur propose de regarder ce que l'on peut faire avec Scratch.

Jusqu'ici, l'intérêt a été assez limité et puis ces derniers temps l'une d'entre elles (Sibylle, 9 ans) a commencé à faire quelques trucs par elle même sans rien me demander. Au bout de quelques heures, il en est sorti un jeu nommé "Chavanturier" :

La plus grande partie du code réside dans la gestion des mouvements du chat : Chanvanturier_v1_ScriptsDuChat

Je lui ai dit que l'on pouvait peut être arranger ces scripts pour s'y retrouver plus facilement. Je lui ai proposé les modifications suivantes[1] :

  • la disposition des blocs d'événements de manière "naturelle" par rapport à l'action représentée (le déplacement vers le haut positionné en haut, le déplacement vers la gauche positionné vers la gauche, etc.)
  • le renommage des "costumes" (les différentes représentations graphiques d'un sprite) en fonction de la direction de déplacement
  • la mise en commun de tout ce qui était répété plusieurs fois à l'identique (les vérifications après déplacement)

Et voilà le résultat (qu'elle a effectivement trouvé plus lisible) : Chanvanturier_v1_ScriptsDuChat_ApresRefactoring

Et voilà comment faire en quelques secondes d'une pierre trois coups, en montrant :

  • L'utilité d'un regroupement logique des divers morceaux de code
  • Le renommage des variables pour qu'elles reflètent l'intention
  • La suppression des duplications par extraction de méthode

Il n'est jamais trop tôt pour apprendre les bons réflexes !

Note

[1] je sais que l'on peut aller plus loin, notamment en rendant lisible le fait de "retourner à la position initiale" mais n'en demandons pas trop à la fois