Ich benutze den Debugger oft, weil ich auf einem großen System arbeite und deshalb nerve.
http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
Egal wie kurz und häufig Ihr Code ist, es besteht immer die Möglichkeit, dass er Fehler enthält. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
Sich zu irren ist menschlich und man kann niemals beweisen, dass ein Programm korrekt ist. Warum also nicht Tools wie Debugger / automatisierte Tests verwenden, um uns in diesem schwierigen Geschäft zu unterstützen?
Wenn der Code kurz genug ist, reichen einfache Tests aus. Auch wenn es kurz ist und Sie die Art des Fehlers kennen, kann das Lesen des Codes ausreichen. Wenn die Codebasis jedoch groß ist, mehrere Sprachen gemischt sind und drei Ebenen umfasst, müssen Sie einfach eine gute Testabdeckung auf vielen Ebenen sowie einen sehr guten Debugger haben - andernfalls werden Sie viel Zeit verschwenden.
Wann brauche ich keinen Debugger?
Ich bin weder der klügste noch der erfahrenste Programmierer, aber manchmal muss ich den Debugger nicht verwenden. Das ist wenn:
- Der Code ist meins oder gut geschrieben und
- Es ist in einer lesbaren Sprache geschrieben UND
- Das Gesamtprojekt ist klein.
Wann verlasse ich mich stark auf einen Debugger?
- Kurze Antwort: oft .
- Wenn eine Anwendung abstürzt. Besonders wenn es eingesetzt wird. Wenn VS2010 auf diesem Computer installiert ist, kann dies einen Unterschied zwischen "Unbekannter Fehler" und "Fehler" bewirken
FileNotFoundException
.
- Wenn eine Bibliothek eines Drittanbieters abstürzt oder sich nicht richtig verhält.
- Wenn der Code schlecht geschrieben ist. Insbesondere, wenn dieselbe Datei in den letzten 10 Jahren von 10 verschiedenen Personen berührt wurde, von denen 7 nicht mehr im Unternehmen sind.
- Wenn das Projekt groß ist
- Wenn der Code eher monolithisch ist.
- Bei mehreren Ebenen (GUI, SQL, BL).
Beachten Sie, dass "Debugger" auf mehr als ein Tool verweisen kann. Ich benutze den Visual Studio-Debugger, den SQL-Debugger (meistens für gespeicherte Prozesse) und den SQL-Profiler (um herauszufinden, welche SP aufgerufen werden). Benötige ich Tools dieses Kalibers, die ich gerade für ein schnelles sysadmin-artiges Python-Skript geschrieben habe? Nein. Wenn ich mein eigenes kleines GUI-basiertes Tool erstellt hätte? Hängt davon ab. Wenn es .Net WinForms ist - wahrscheinlich nicht. Wenn es WPF ist - ja.
Was macht eigentlich einen "echten" Programmierer aus? Eine, die schnell ist? kenntnisreich? Kann man Algorithmen gut? Schreibt eine gute Dokumentation? Wann genau schließt man diesen neuen Titel ab? Wann überschreitet man die magische Grenze?
Ich würde sagen, dass ein Programmierer, der sich in mehr als 100 Mannjahren nicht die Hände schmutzig gemacht hat, keine Chance hatte, sich von der Komplexität und den eigenen Einschränkungen (sowie von der frustrierten Codequalität) demütigen zu lassen.
Ich persönlich versuche, den besten Debugger zu verwenden, der mir zur Verfügung steht, und ich benutze ihn häufig. Wenn eine Aufgabe einfach genug ist und keinen Debugger erfordert, verwende ich sie dann nicht. Es dauert nicht lange, um herauszufinden, ob ich einen brauche oder nicht.
...
Jetzt konnte ich theoretisch die Codebasis so lange lesen, dass ich sie einfach bekam. Die praktische Herangehensweise funktioniert jedoch am besten, und ich möchte oft den blöden Code, den ich sehe, neu schreiben. Leider würde ich mehr als 10 Jahre brauchen, um die Codebasis, in der ich mich befinde, zu bereinigen. Die Verwendung des Debuggers ist daher ein offensichtlicher erster Schritt. Nur wenn ich herausfinde, welche von 5 Millionen Codezeilen aktiv ist, würde ich die Datei nach oben und unten durchsuchen, um herauszufinden, was diese Klasse tut.