Même si je pourrais vous parler des biens faits du yaourt sur l'organisme, vous expliquer à quel point de produit laitier est merveilleux et vous montrer que je suis un expert du sujet (non) : on ne va pas vraiment parler de yaourt ici. Enfin si mais pas vraiment.
On va prendre uniquement le mot yaourt. Mais j'aurai pu choisir raclette ou jambon ou encore chocolat – parce que tout ça c'est bon et personne ne dira le contraire. J'aurai aussi pu choisir canard ou Géraldine aussi.
Mais revenons à notre sujet : le debug de code.
Les devs n'utilisent pas les outils
Je commence par ça pour être très clair : on a des très bons débugueurs de code aujourd'hui. Qu'on fasse du web front avec les debugueurs des navigateurs, du Java ou du C# avec des IDE qui nous fournissent un accès à tout l'état de l'application à un instant T, ou même via des programmes externes qui permettent d'inspecter les messages échangés entre nos services, et j'en passe.
Mais on finit toujours par utiliser un bon vieux console.log()
ou System.out.println()
ou toute autre fonction qui permet d'afficher du texte dans une console, qui ralenti notre programme et fausse partiellement ce qu'on essaie de tester. Et qui se retrouve de temps en temps poussé avec notre travail pour finir en production et qu'un de nos collègues ou nous même quelques jours, semaines, mois après trouvera et se dira « mais qui a laissé ce log nul ? », regardera qui l'a ajouté au projet, ne dira rien et le supprimera en se rendant compte que c'est lui-même...
Parce que le problème c'est bien ça : si on ne fait rien de particulier on finit toujours par laisser un de ces logs passer. Et ils peuvent rester très longtemps dans certains cas : imaginer qu'on fasse un `System.out.println()` au milieu d'une application web qui envoi normalement tous ses logs dans un ElasticSearch et dont on ne regarde jamais la sortie console normalement…
Le yaourt peut vous sauver !
Revenons donc à notre yaourt.
Mon idée est simple mettez le mot yaourt dans vos logs jetables. Enfin pas yaourt, plutôt YAOURT. Histoire de bien le voir vu que tout notre code est généralement en minuscule.
Jamais vous ne pourrez confondre ce log avec log légitime. Parce que c'est aussi ça le problème dans l'histoire : quelques mois après, parfois on ne sait plus si c'était normal de faire ce log, donc parfois on le laisse dans le doute. Mais avec le mot YAOURT dans le log vous savez que ce n'est pas normal. Normalement vous auriez même dû le voir en vérifiant le contenu de votre commit au moment de le faire.
Bien sûr si votre application est une application qui parle de nourriture ça ferait moins tâche. Donc n'hésitez pas à trouver un autre mot comme un prénom ou un animal ou objet. De préférence un mot mi-long : s'il est trop cours il sera peu visible, trop long vous n'aurez pas le courage de le taper. De préférence dans une autre langue que celle de votre code (si vous nommez vos variables en anglais, utilisez un mot français par exemple). Comme ça peut sauter encore plus aux yeux.
Si vraiment vous le sentez, vous pouvez aussi utiliser des émojis. Aujourd'hui je pense que presque tous les langages supportent l'UTF-8 étendu dans les chaînes de caractère. Je pense que si je vois des logs avec un émoji du genre ⛄ ou 💩, je me dirais qu'il n'a rien à faire là !
Soyez un nazi du yaourt !
Personnellement je ne le fais pas, mais je pense que si vraiment vous voulez être certain de ne pas laisser passer de yaourt en production vous pouvez prévoir des outils.
Le premier qui me vient en tête est simple un pre-commit-hook. On pourra alors lancer un script avant que git ne crée un commit. Un simple appel à grep pour vérifier que le commit ne contient pas le mot YAOURT suffira à éviter une erreur 😉
Je pense aussi que côté frontend on doit pouvoir facilement créer une règle ESlint qui nous indique un warning ou une erreur si on a le mot YAOURT présent dans le code. On doit aussi pouvoir créer une règle SonarQube pour vérifier qu'aucun yaourt ne se cache dans le code.
On peut sans doute aussi configurer des règles sur nos éditeurs/IDE pour faire la vérification.
Beaucoup de possibilité pour avoir un peu plus d'aide. Mais que ça ne vous empêche pas de relire le code tout simplement. Parce que si on interdit YAOURT mais qu'en tapant vite on écrit YAUORT, le log ne posera aucun souci.
Conclusion
Je ne dis pas que c'est LA solution ultime pour vos debug. Mais je pense que ça peut vous éviter beaucoup de bourdes.
Pensez aussi qu'on peut facilement appliquer des filtres sur les logs pour ne faire apparaître que les logs contenant un mot. 😉
Crédit photo : https://pixabay.com/photos/yogurt-berries-blueberries-dessert-1612787/