J'utilise souvent le débogueur, car je travaille sur un gros système et donc je crains.
http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
Quelle que soit la longueur et la fréquence de lecture de votre code, il y aura toujours la possibilité qu'il contienne des bogues. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
L'erreur est humaine et on ne peut jamais prouver qu'un programme est correct, alors pourquoi ne pas utiliser des outils tels que le débogueur / test automatisé pour nous aider dans cette entreprise difficile?
Si le code est suffisamment court, des tests simples suffiront. De plus, s'il est court et que vous connaissez la nature du bogue, la lecture du code peut suffire. Cependant, une fois que la base de code est grande, implique plusieurs langues mélangées ensemble, plus 3 niveaux, alors vous devez simplement avoir une bonne couverture de test à plusieurs niveaux plus un très bon débogueur - sinon vous perdrez beaucoup de temps.
Alors, quand n'ai-je pas besoin d'un débogueur?
Je ne suis pas le codeur le plus intelligent, ni le plus expérimenté, mais quand même, je n'ai parfois pas besoin d'utiliser le débogueur. C'est quand:
- Le code est à moi ou bien écrit ET
- Il est écrit dans un langage lisible ET
- Le projet global est petit.
Quand dois-je compter fortement sur un débogueur?
- Réponse courte: souvent .
- Lorsqu'une application se bloque. Surtout quand il est déployé. L'installation de VS2010 sur cet ordinateur peut faire une différence entre "Erreur inconnue" et
FileNotFoundException
.
- Lorsqu'une bibliothèque tierce se bloque ou se comporte mal.
- Lorsque le code est mal écrit. Surtout si le même dossier a été touché par 10 personnes différentes au cours des 10 dernières années, dont 7 ne font plus partie de l'entreprise.
- Quand le projet est grand
- Quand le code est plutôt monolithique.
- Lorsqu'il y a plusieurs niveaux (GUI, SQL, BL) impliqués.
Notez que "débogueur" peut faire référence à plusieurs outils. J'utilise également le débogueur Visual Studio, le débogueur SQL (principalement pour les proc stockés) et le profileur SQL (pour déterminer quels SP sont appelés). Aurais-je besoin d'outils de ce calibre que j'écrivais un rapide script Python sysadmin-ish? Non. Si j'ai créé mon propre petit outil basé sur une interface graphique? Dépend. S'il s'agit de .Net WinForms - probablement pas. Si c'est WPF - oui.
Qu'est-ce qui définit un "vrai" programmeur de toute façon? Celui qui est rapide? bien informé? Est-ce bon en algorithmes? Écrit une bonne documentation? À quel moment exactement obtient-on son diplôme dans ce nouveau titre? Quand franchit-on la ligne magique?
Je dirais qu'un programmeur qui ne s'est pas sali les mains dans un effort de plus de 100 années-homme n'a pas eu la chance d'être humilié par la complexité et ses propres limites (ainsi que frustré par la qualité du code).
J'essaie personnellement d'utiliser le meilleur débogueur à ma disposition, et j'ai tendance à l'utiliser souvent. Si une tâche est assez simple et ne nécessite pas de débogueur - je ne l'utilise pas alors. Il ne faut pas trop de temps pour savoir si j'en ai besoin ou non.
...
Maintenant, en théorie, je pouvais lire la base de code pendant si longtemps, que je l'obtiendrais. Cependant, l'approche pratique fonctionne mieux, et je veux souvent réécrire ce code stupide que je vois. Malheureusement, il me faudrait plus de 10 ans pour nettoyer la base de code dans laquelle je me trouve. L'utilisation du débogueur est donc une première étape évidente. Ce n'est que lorsque je découvre que l'une des 5 millions de lignes de code agit, que j'analyse le fichier de haut en bas pour essayer de comprendre ce que fait cette classe.