Die Kontroverse um Kommentare
Heute widmen wir uns einem überraschenden Thema: den Kommentaren. Habt ihr erwartet, dass wir nach Funktionen direkt zu Klassen und Objekten übergehen (kleiner Spoiler für später)? Wie wir aber am Tag 2 gelernt haben: "Funktionen sind die erste und kleinste Ebene der Modularisierung einer Software" und bilden bereits eine vollständige Grundlage, bevor wir zu komplexeren Konzepten fortschreiten.
Eine radikale These
Die Clean-Code-Philosophie zu Kommentaren lässt sich tatsächlich in einem provokanten Satz zusammenfassen: Clean Code ist Code ohne Kommentare. Diese Aussage löst sofort Diskussionen aus. In meiner gesamten Karriere war ich nur in einem einzigen Projekt, in dem diese Regel strikt eingehalten wurde – und überraschenderweise funktionierte es hervorragend. Anfangs vermisste ich das Schreiben von Kommentaren, doch schon bald entwickelte ich die Systeme weiter, ohne überhaupt daran zu denken. Eine reine Gewöhnungssache? Nicht unbedingt. Der Code war einfach so gut strukturiert, dass Kommentare schlicht überflüssig wurden.
Der tiefere Grund
Ein alternativer Blick auf dieses Thema lautet: Wenn ein Kommentar notwendig erscheint, hat man möglicherweise die Domäne nicht gut genug verstanden, um sie klar im Code abzubilden. Leider ist es oft der erste Impuls von Entwicklern, einen Kommentar zu schreiben, wenn sie unsicher sind, wie etwas implementiert werden sollte. Stattdessen lohnt es sich, mehr Zeit in das Verständnis der Anforderungen und der Fachlichkeit zu investieren.
Sinnvolle Ausnahmen
Natürlich gibt es auch hier legitime Ausnahmen:
Rechtliche Hinweise
TODO-Kommentare (temporär)
Javadoc für öffentliche APIs
Und weitere Spezialfälle, die besser durch konkrete Beispiele veranschaulicht werden
Der Clean-Code-Ansatz
Versucht heute, statt reflexartig Kommentare zu schreiben, lieber über aussagekräftige Funktionsnamen nachzudenken. Falls ihr doch kommentieren müsst, dann befolgt auch dabei Clean-Code-Prinzipien. Vielleicht hilft euch statt eines kommentierten Funktionsablaufs das Compose Method Pattern weiter.