Montag, 9. Mai 2011

Auskommentierter Code

Auskommentierter Code ist absolut nichts seltenes. Aber wie oft ist er eigentlich noch nützlich? Vor allem, wenn es Code ist, den man nicht selbst per Kommentarzeichen aufs Altenteil geschickt hat. Als ich als Entwickler anfing, sagte mir mal ein erfahrenerer Kollege, auskommentierter Code sei so eine Art Code-Dokumentation und würde für sich selbst stehen. Ich konnte damit nie viel anfangen und weiß heute, dass das quatsch ist. Der Auskommentierte Code sagt nämlich kaum etwas aus, sondern stört viel mehr den Lesefluss. In den meisten Fällen weiß ich nämlich nicht einmal, warum der Code auskommentiert wurde. War er defekt? Unperformant? Hat er Seiteneffekte Produziert? Wurde er vielleicht zum Testen auskommentiert und sollte später wieder rein? Das könnte natürlich auch dazugeschrieben werden, was mir aber in den seltensten Fällen untergekommen ist. Ich stehe mitlerweilen auf dem Stand, dass das Versionierungssystem viel besser für Altcode geeignet ist als Kommantarloser Kommentarcode. Im Versionierungssystem lässt sich das alte Codefragment in seinem originalen Lebensraum begutachten, was viel mehr Aussagekraft besitzt, als etwas loses.

Das schönste sind aber Stellen, die für Verwirrung sorgen. In einem Projekt habe ich eine Codestelle, an der seit 2007 steht: TODO: Das muss noch ausprogrammiert werden. Das ist natürlich ein Hinweis, mit dem kein Mensch mehr etwas anfangen kann. Scheinbar hat sich an der bestehenden Funktionalität keiner mehr gestört.

Ebenfalls häufig anzutreffen sind auskommentierte stellen wie alert("hier") oder System.out.println("message +" " + id"). Das sind dann Überreste, die beim Debugging gebraucht wurden und schlicht vergessen wurden, wobei "vergessen" gut gemeint ist. Ich habe schon Code gehabt, wo ich ein Minnimum von mindestens zwei auskommentierten Debugg-Meldungen pro Methode hatte. Das stört dann sehr beim Lesen und ich kann dem auch nichts praktisches mehr abgewinnen.

Zum Glück nicht ganz so häufig, aber leider auch nicht selten, sind die Verquickungen von Auskommentierten und funktionalem Code. Da habe ich gerade ein aktuelles Beispiel vor mir. Ich nehme an, so etwas entsteht, wenn man mal eben etwas ausprobieren will. Ob die Kommentarzeichen nur vergessen wurden oder das return an dieser Stelle einfach falsch gewesen ist, lässt sich leider nicht mehr so einfach herausfinden.

    else if (document.multiBox.id != formDiv.id){
    //  return;
    }

Keine Kommentare:

Kommentar veröffentlichen