Le refactoring c’est tout le temps, et c’est normal. (épisode 4 - montre moi)
Marc prend le clavier. Il parcourt le code en le lisant à voix haute.
Ça va vite.
Charlotte a du mal à anticiper les déplacements du curseur sur l’écran, elle cherche un repère en regardant les mains de Marc sur le clavier.
Il utilise des raccourcis, elle ne sait pas ce qu’il fait.
Elle ne comprend rien.
Elle se sent nulle.
« Ça, ça n’a pas besoin d’être gros : ces fonctions sont longues et celles-là ont plus de trois paramètres, c’est trop.
« C’est quoi cet amas de données dans cette fonction, tu es sûre que la fonction fait une seule chose ? Le nom que tu lui as donné est forcément faux.
« Là, tu ne décides pas : il y a beaucoup de cas différents, c’est difficile de comprendre, le métier a autant de chemins alternatifs ? Je vois aussi beaucoup de champs temporaires, c’est suspect tous ces changements.
« Là tu décides et je ne sais pas pourquoi : je vois un nombre magique.
— Pourquoi magique ?
— Magique pour moi, je ne sais pas pourquoi il est là, rien ne me l’explique. Si c’était une constante tu l’aurais nommée et je comprendrais à quoi elle sert. »
« Ces commentaires ne disent pas la même chose que la fonction. Qui a raison ? »
« Ici, on dirait que tu fais exprès de fabriquer des choses difficiles : beaucoup d’objets sont ouverts, et pourquoi ces deux objets sont systématiquement passés en paramètre de ces sept fonctions ?
« L’objet syllabe est compliqué pour rien, ces fonctions ne sont pas utilisées : pourquoi as-tu créé des syllabes dakuten et handakuten ?
— C’est pour le moment où je voudrais faire des leçons de dakuten et handakuten …»
En répondant à la question Charlotte comprend le problème.
« Charlotte, n’écris pas du code pour le cas où. Nous ne sommes pas omniscients nous autres les êtres humains, en général nous sommes de mauvais spéculateurs.
« Ce code que tu as écrit pour une fonction qui pourrait arriver dans le futur, cette fonction dont personne ne veut maintenant, qui va l’utiliser et te donner du feedback ?
« Ah et puis là c’est du code dupliqué.
— Non, ça c’est pour le cas où … »
Regards croisés en silence.
« Marc, j’avais bien compris que ce que j’avais fait n’allait pas, tu devais me montrer.
— Oui, oui c’est vrai. Bon écoute, les problèmes d’écriture de code sont connus et résolus. Tu n’as pas à inventer des solutions pour ça, tu dois juste les connaître et les appliquer.
— Je sais. Tes remarques sont pertinentes mais je risque de tout casser si je les prends toutes en compte.
— Prend les unes par une.
— Une par une… je répète je vais tout casser si je remanie en permanence.
— Pas si tu as des tests.
— Je ne vois pas le rapport.
— Ton premier “jet” de code qui marche est bien car il marche, mais il n'est pas du tout satisfaisant car il n’est pas remanié. Cela revient à construire sur des bases fragiles, ça va forcément casser. »
Charlotte sourit, elle pense que Marc a dû construire beaucoup de tours de kaplas lui aussi.
Marc reprend :
« Aucun développeur au monde ne peut écrire du code satisfaisant du premier coup, heureusement il y a le refactoring pour ça.
« Les remaniements successifs rendent le code acceptable.
— Comme mon process d’écriture de mail.
— Exactement. Tous les points que j’ai soulevés doivent être vus lors du refactoring. »
Charlotte est en pleine réflexion.
« Tu peux me montrer concrètement ?
— Oui. Quelle est la prochaine fonction à développer ?
— Afin d’éviter les déductions, en tant que Charlotte, je veux apprendre à un niveau difficile.
— Tu as la spécification ?
— Oui, voici :
Spécification :
- Une leçon peut être lancée en 3 modes : facile - normal - difficile.
- Le mode facile propose les kanas de la leçon uniquement.
- Le mode normal propose les kanas de la leçon lancée plus les kanas des leçons précédentes.
- Le mode difficile propose les mêmes kanas que le mode normal.
- Le mode difficile affiche au maximum 5 propositions pour chaque devinette.
- Aléatoirement, le mode difficile peut proposer des propositions à deviner avec ou sans la bonne réponse.
— D’accord, c’est parti. »
épisodes :
4 - montre moi