Un modèle commun pour localiser un bogue suit ce script:
- Observez l'étrangeté, par exemple, pas de sortie ou un programme suspendu.
- Recherchez le message pertinent dans le journal ou la sortie du programme, par exemple, "Impossible de trouver Foo". (Ce qui suit n'est pertinent que s'il s'agit du chemin emprunté pour localiser le bogue. Si une trace de pile ou d'autres informations de débogage sont facilement disponibles, c'est une autre histoire.)
- Localisez le code où le message est imprimé.
- Déboguer le code entre le premier endroit où Foo entre (ou devrait entrer) l’image et où le message est imprimé.
Cette troisième étape est celle où le processus de débogage s'arrête souvent car il y a de nombreux endroits dans le code où "Impossible de trouver Foo" (ou une chaîne basée sur un modèle Could not find {name}
) est imprimé. En fait, plusieurs fois une faute d’orthographe m’a aidé à trouver l’emplacement réel beaucoup plus rapidement que je n’aurais pu le faire autrement: le message était unique dans l’ensemble du système et souvent dans le monde entier, ce qui entraînait immédiatement l’apparition d’un moteur de recherche pertinent.
La conclusion évidente est que nous devrions utiliser des identifiants de message uniques dans le code, en les codant en tant que partie intégrante de la chaîne de message et en vérifiant éventuellement qu'il n'y ait qu'une seule occurrence de chaque identifiant dans la base de code. En termes de facilité de maintenance, quels sont les avantages et les inconvénients les plus importants de cette approche pour cette communauté, et comment l’appliqueriez-vous ou garantiriez-vous qu’elle ne devienne jamais nécessaire (en supposant que le logiciel contiendra toujours des bogues)?