JavaScript/Tutorials/Einstieg/Fehlervermeidung

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Das Debuggen mit dem Seiteninspektor wird irgendwann zur Routine. Schwieriger wird es, logische Fehler zu finden. Hier hilft es, sie gar nicht erst zu machen, sondern von Anfang an eine Strategie zur Fehlervermeidung zu entwickeln.

„Tatsächlich gestaltet sich das „Programmieren“ bei mir in der Regel so, dass ich erst einmal für viele Stunden wie Rodins Denker dasitze, über die Anforderungen und Lösungswege nachdenke und dann mit Stift und Papier die vorläufigen Ergebnisse meiner Überlegungen in Flussdiagrammen aufzeichne.

Rodin’s Denker

Wenn ich irgendwann das Gefühl habe, die entsprechenden Pläne würden einigermaßen Sinn ergeben, dann öffne ich die Datei in der ich meinen Code dokumentiere, erstelle ein neues Kapitel und beginne mit einer Kurzen inhaltlichen Zusammenfassung der entsprechenden Programmroutine.

Dann definiere ich die Eingaben und Ausgaben, sprich, welche Parameter von welchem Typ nimmt die Funktion entgegen, und welche Variablen von welchem Typ sollen am Ende ausgegeben werden.

Wenn Eingabe und Ausgabe klar definiert sind, schreibe ich dann in natürlicher Sprache einen detaillierten Algorithmus auf, der keinerlei Rücksicht auf Performanz nimmt oder auch nur in irgendeiner Form die tatsächliche spätere Implementierung antizipieren würde, sondern der einzig und allein dazu dient, den Programmablauf widerspruchsfrei zu beschreiben. Das heißt, undefinierte Programmzustände müssen soweit wie es möglich ist ausgeschlossen sein.

Wenn der Algorithmus dann fertiggestellt ist und ich keine logischen Fehler erkennen kann, dann füge ich meistens noch Kommentare hinzu, die einerseits dazu dienen, bestimmte Punkte noch ausführlicher zu beschreiben, andererseits aber auch den Zweck haben, die dahinterstehende Motivation zu begründen, damit man beim späteren Durchlesen den Faden leichter wieder aufnehmen kann.

Erst dann fange ich mit der tatsächlichen Implementierung des Algorithmus an! :-)

Dabei ist das Ziel dann zunächst einmal, die Routine unter Anwendung von best practices so zu schreiben, dass sie das in dem Algorithmus beschriebene Verhalten exakt widergibt, was natürlich auch entsprechende Tests beinhaltet. Ist dieses Ziel dann erreicht, wird gegebenenfalls schließlich noch auf Performanz getestet, verglichen, und das Ganze dann eventuell neu aufgesetzt und erneut getestet.

Je nach Komplexität des Algorithmus’ fällt diese Phase mal kürzer und mal länger aus. Allerdings tendiere ich dazu, meine Funktionen klar abgegrenzte Aufgaben ausführen zu lassen und monolithische Konstrukte zu vermeiden, sodass die Implementierung üblicherweise relativ zügig abgeschlossen werden kann und sie schließlich nur einen kleinen Teil der Zeit in Anspruch nimmt…

Du wirst jetzt wahrscheinlich denken, dieser Aufwand wäre vollkommen verrückt und unangemessen, aber glaube mir, insbesondere wenn man an einem so komplexen System arbeitet, ist Fehlervermeidung weit weniger teuer als Fehlerbeseitigung! :-D

Viele Grüße,

Orlok


Mit dieser Vorgehensweise können auch komplexere Programme in kleinere Einheiten gegliedert und erfolgreich programmiert werden.

Siehe auch