Le commentaire qui mentait depuis trois ans

par Serguey Shinder

Il y avait un commentaire dans notre code que j’ai fini par appeler, en privé, le menteur. Il décrivait une fonction avec une belle assurance : ce qu’elle recevait, ce qu’elle renvoyait, les cas particuliers qu’elle gérait. Le problème, c’est que rien de tout cela n’était vrai. Plus maintenant. Le code sous le commentaire avait été modifié, corrigé, retourné une dizaine de fois. Le commentaire, lui, était resté figé, fidèle à une version du monde disparue depuis des années.

J’ai perdu une demi-journée à cause de lui. Je déboguais un comportement étrange, et je faisais confiance au commentaire au lieu de lire le code. Il m’affirmait que la fonction rejetait les valeurs nulles. Elle ne les rejetait pas. Elle ne l’avait pas fait depuis longtemps. J’ai cherché mon bug partout sauf là où il était, parce qu’une phrase écrite avec aplomb m’avait convaincu de ne pas regarder.

Ce jour-là, j’ai compris quelque chose sur les commentaires que personne ne m’avait dit clairement. Un commentaire n’est pas vérifié. Le code, lui, est exécuté ; s’il ment, quelque chose casse. Le commentaire peut mentir indéfiniment sans que rien ne proteste. Il ne vieillit pas avec le code ; il vieillit contre lui. Et plus il est ancien, plus on lui fait confiance, alors qu’il faudrait exactement l’inverse.

Depuis, ma méfiance a changé de cible. Je ne me demande plus seulement si le code est correct, mais si ce qui l’entoure dit encore la vérité. Un nom de fonction qui promet une chose et en fait une autre. Une variable appelée temporaire qui vit depuis cinq ans. Une documentation qui décrit un système qui n’existe plus. Ce sont tous des cousins du commentaire menteur : des mots qui prétendent décrire une réalité qu’ils ne suivent plus.

J’écris donc moins de commentaires, et je m’efforce de rendre le code lui-même honnête — un bon nom plutôt qu’une explication, une structure claire plutôt qu’une note qui la justifie. Parce que le code ne peut pas mentir très longtemps : il finit toujours par s’exécuter. Les mots posés à côté, eux, peuvent tromper pendant des années sans que personne ne les rappelle à l’ordre.

– Serguey Asael Shinder

Leave a comment