Verwenden Sie immer noch print-Anweisungen zum Debuggen?

Seit ich programmiere (seit fast zwei Jahrzehnten), habe ich eine Art Print-Anweisung zum Debuggen verwendet. Die Verwendung von print-Anweisungen ist eine gute Möglichkeit, Ihren Code zu verfolgen und potenzielle Probleme zu beheben. Darüber hinaus können Druckanweisungen für Protokollierungs- und Diagnosezwecke verwendet werden.

Interaktive Debugger, mit denen Sie Ihren Code durchgehen, die Variablen Ihres Programms überprüfen und die Stapelverfolgung anzeigen können, gibt es jedoch seit den frühen 1980er Jahren. Daher überrascht es mich, dass viele Programmierer auch nach all dieser Zeit immer noch hauptsächlich Druckanweisungen verwenden, um ihren Code zu debuggen. Als Java-Programmierer sind Sie wahrscheinlich nur allzu gut mit den Methoden System.out.println()und vertraut System.err.println(). Tatsächlich verwenden die meisten mir bekannten Java-Programmierer eine Kombination aus einem Texteditor, dem JDK und printlnAnweisungen, um ihre Anwendungen zu entwickeln, zu debuggen und bereitzustellen.

Ineffektiv und irritierend

Druckanweisungen können zwar nützlich sein, ich habe sie jedoch nie als sehr effektiv empfunden. Das Überprüfen von Hunderten von Ausgabezeilen kann ziemlich überwältigend sein, und der Code selbst wird mit zahlreichen Zeilen von Debugging-Anweisungen überfüllt. Wenn Sie die Ausgabe nicht in einer Datei erfassen, können Sie in Ihrem Konsolenfenster nach oben und unten scrollen, um festzustellen, dass Sie einen Teil der Ausgabe verloren haben, weil die Puffergröße Ihres Fensters zu klein ist.

Dieses Szenario wird in der JSP / Servlet-Entwicklung noch schlimmer. Bei eigenständigen Anwendungen oder Applets wissen Sie im Allgemeinen, wo sich die Ausgabe von System.outund / oder System.errbefindet - entweder in Ihrem Konsolenfenster oder in der Java-Konsole des Browsers. Bei JSP und Servlets finden Sie die Ausgabe wahrscheinlich in den Protokolldateien der JSP / Servlet-Engine, aber das ist nicht immer der Fall. Die Fehlerausgabe und die Standardausgabe der JSP / Servlet-Engine können in verschiedene Dateien verschoben werden. Um die Sache noch schlimmer zu machen, können Sie mit den meisten JSP / Servlet-Engines den Namen der Protokolldateien konfigurieren / angeben. Wenn ein Administrator den Standardspeicherort dieser Dateien neu konfiguriert, können Sie Zeit damit verschwenden, die Dateien zu suchen. und wenn Sie keine Berechtigung zum Zugriff auf die Dateien haben, haben Sie kein Glück, bis das Problem behoben ist.

Erfolgreiche Alternativen

Erfahrene Entwickler verwenden im Allgemeinen eine Art Protokollierungs- / Ablaufverfolgungsframework, das alle Debugging-Nachrichten an eine oder mehrere Dateien senden kann. Darüber hinaus können diese Frameworks verschiedene Debugging-Ebenen enthalten, die in der Anwendung konfiguriert werden können. Zur Fehlerbehebung kann die Debugging-Stufe einer Anwendung (wie bei einer Lautstärkeregelung) erhöht und weitere Debugging- und / oder Diagnosemeldungen generiert werden.

Natürlich gibt es heute auf dem Markt noch bessere Alternativen in Form neuer und verbesserter Debugging-Tools. Mit der Debugging-Lösung von MetaMata können Sie beispielsweise JSP-Code debuggen. Mit herkömmlichen Java-IDEs wie Visual Café und JBuilder können Sie Code schrittweise durchlaufen. Meiner Meinung nach ist Visual Café eine IDE, die es nach fünf Jahren endlich richtig verstanden hat. Visual Café 4.0x wird viel schneller geladen als seine Vorgänger, ist außerdem sehr stabil und bietet leistungsstarke Funktionen wie Remote-EJB- und JSP-Debugging. Diese Funktionen können die Notwendigkeit von Druckanweisungen - zumindest für Debugging-Zwecke - fast vollständig beseitigen, obwohl Sie sie möglicherweise weiterhin für die Protokollierung verwenden möchten.

Fazit

Java ist in den letzten fünf Jahren ziemlich gereift, und Java-Entwicklungstools auch. Die Frage ist: Sind Sie einer der Entwickler, die immer noch print-Anweisungen zum Debuggen verwenden? Und werden Sie die neuen Tools davon überzeugen, Ihren Debugging-Stil zu ändern? Schreiben Sie mir und lassen Sie es mich wissen. Oder schalten Sie den Sound im iSavvix Soapbox-Forum aus.

Anil Hemrajani ist Chief Technology Officer bei iSavvix, einem Technologiedienstleistungsunternehmen für Full-Service-Java- und Internet-Technologielösungen. Er freut sich über Ihre Kommentare und Fragen zu dieser Kolumne.

Erfahren Sie mehr über dieses Thema

  • MetaMata

    //www.metamata.com

  • Visual Café Produktinformationen

    //www.visualcafe.com

  • JBuilder-Produktinformationen

    //www.inprise.com/jbuilder/

  • Der Abschnitt Entwicklungstools des JavaWorld Topical Index

    //www.javaworld.com/javaworld/topicalindex/jw-ti-tools.html

  • Das JavaWorld Developer Tools-Handbuch

    //www.javaworld.com/javaworld/tools/

  • Vollständige Auflistung der Soapbox- Spalten von Anil Hemrajani

    //www.javaworld.com/javaworld/topicalindex/jw-ti-soapbox.html

  • Melden Sie sich für den kostenlosen wöchentlichen E-Mail-Newsletter von JavaWorld This Week an und informieren Sie sich über die Neuigkeiten bei JavaWorld

    //www.idg.net/jw-subscribe

Diese Geschichte: "Verwenden Sie immer noch print-Anweisungen zum Debuggen?" wurde ursprünglich von JavaWorld veröffentlicht.