Si sur le principe c'est vrai, dans le premier cas, tu organise ton code pour un cas particulier (comparaison d'historique) plutôt que pour un usage plus général (lecture du code). Simple stat : combien de fois un lecteur parcours un code vs compare des historiques ?
Pour le second, je ne suis pas convaincu : qu'apporte le code du filtre de mots sur le reste ?
Ce cas est plutôt un contre exemple… :pPar exemple, cela peut arriver si la documentation technique ne précise pas sur quel critère le programme se base pour déterminer si un mot est injurieux voire ne précise pas que le programme filtre les mots injurieux.
Scénario possible : Un client se plaint qu'un certain mot ne soit pas pris en compte. Le help desk ne reproduit pas le problème en local et me le retransmet. Je découvre que le code appelle filterOffensiveWords() et je soupçonne cette fonction d'avoir filtré le mot chez le client mais pas chez moi. J'ai besoin de savoir comment elle marche. Je lis son code et je découvre que la liste des mots injurieux se base, entre autres, sur un fichier de préférences du client. Je complète alors des documentations dont celle destinée au help desk pour que, la prochaine fois, le personnel du help desk regarde dans le fichier de préférence du client avant de me retransmettre le problème.
Sur cette anecdote, tu est bien d'accord que ton process est d'écrire un test d'appel à filterOffensiveWords() avec le mot particulier et voir voir que ça marche chez toi, puis vérifier ce code et je ne vais pas paraphraser ce que tu a écris. Oui tu complète la documentation (pour moi ça commence par la fonction filterOffensiveWords() en ajoutant "filtre basé sur le fichier de préférences"), mais le découpage en fonction t'a permis de cibler plus rapidement le problème. D'ailleurs, si la doc de la fonction est déjà à jour, tu a demandé au helpdesk si ils ont vérifié ça avant même de tester…
"Personnellement", "espoir", "si", "il se peut", "il devra"…*Tu ne trouve pas que ça fait un peu trop pour espérer que ce soit fait ? De plus, c'est en contradiction avec ce que tu dis avant à propose de la rapidité d'avoir l'information. Car à nouveau :Personnellement, quand j'écris un commentaire relatif à un ticket, je complète le ticket et j'y écrit "Voir les occurrences de XXXX (le numéro du ticket) dans le code". Du coup, il y a un léger espoir que celui qui aura corrigé le ticket mettra à jour le commentaire.
Sinon, si le commentaire n'a pas été mis à jour et que quelqu'un le lit, il se peut qu'il cherche à avoir plus d'informations en consultant le ticket puis découvre que le ticket est fermé. Alors, il devrait supprimer le commentaire.
- Si le ticket n'a aucun rapport avec ce bout de code (le ticket a une influence sur ce comportement mais ne le concerne pas directement), celui qui traite le ticket ne verra jamais ce commentaire
- Si le lecteur de ce code n'est pas concerné par un problème lié à la description du commentaire, il n'ira jamais voir le ticket…
Admet que ces deux cas sont des certitudes…
Ce que tu décris est différent de ce que j'ai compris de foetus. Faire évoluer du code en le réécrivant et pour ça commenter l'ancien le temps de la réécriture, je ne vois pas le problème, ça reste une action personnelle qui ne quitte pas la version locale et la publication est propre. Dans le cas de foetus, j'ai cru comprendre que ce code mort reste ad-vitam aeternam "au cas où"…On dirait que je fais pareil que foetus.
Parfois, lors d'un développement, j'ai besoin d'avoir sous les yeux comment étaient certaines portions de code juste avant que je ne les modifie, sans perdre du temps à chercher la précédente version dans la dernière révision SVN. Alors, au lieu de supprimer tout de suite l'ancienne portion de code, je la mets en commentaires. Quand le développement est fini et qu'il semble bien marcher, je supprime le code mort avant le commit.
Partager