Hier ist eine Frage, die ich mir gerne stelle, wenn ich überlege, ob ich einem Codeabschnitt einen Kommentar hinzufügen soll: Was kann ich vermitteln, das der nächsten Person hilft, die allgemeine Absicht des Codes besser zu verstehen , damit sie ihn aktualisieren, korrigieren oder verbessern kann? Verlängern Sie es schneller und zuverlässiger?
Manchmal ist die richtige Antwort auf diese Frage, dass Sie an dieser Stelle im Code nicht viel hinzufügen können, da Sie bereits Namen und Konventionen ausgewählt haben, die die Absicht so offensichtlich wie möglich machen. Das heißt, Sie haben einen soliden selbstdokumentierenden Code geschrieben, und das Einfügen eines Kommentars würde wahrscheinlich mehr beeinträchtigen als helfen. (Beachten Sie, dass redundante Kommentare die Zuverlässigkeit des Codes im Laufe der Zeit beeinträchtigen können, indem sie die Synchronisation mit dem tatsächlichen Code im Laufe der Zeit verlangsamen und es somit schwieriger machen, die tatsächliche Absicht zu entschlüsseln.
In fast jedem Programm und in jeder Programmiersprache werden Sie jedoch auf Punkte stoßen, an denen bestimmte kritische Konzepte und Entscheidungen, die der ursprüngliche Programmierer - von Ihnen - getroffen hat - im Code nicht mehr erkennbar sind. Dies ist so gut wie unvermeidlich, da ein guter Programmierer immer für die Zukunft programmiert - das heißt, nicht nur, um das Programm einmal zum Laufen zu bringen, sondern um all seine vielen zukünftigen Korrekturen und Versionen und Erweiterungen sowie Änderungen und Anschlüsse vorzunehmen und wer weiß, was zu tun ist auch richtig funktionieren. Letzteres ist viel schwieriger und erfordert viel mehr Überlegungen, um erfolgreich zu sein. Es ist auch sehr schwer in den meisten Computersprachen zum Ausdruck bringen, die auf Funktionalität fokussierter sind - das heißt, auf zu sagen , was tut dies Version des Programms muss jetzt tun, um es zufriedenstellend zu machen.
Hier ist ein einfaches Beispiel dafür, was ich meine. In den meisten Sprachen ist eine schnelle Inline-Suche in einer kleinen Datenstruktur so komplex, dass jemand, der sie zum ersten Mal betrachtet, sie wahrscheinlich nicht sofort erkennt. Dies ist eine Gelegenheit für einen guten Kommentar, da Sie etwas über die Absicht Ihres Codes hinzufügen können, das ein späterer Leser wahrscheinlich sofort als hilfreich für die Entschlüsselung der Details einschätzen wird.
Umgekehrt kann es in Sprachen wie der logikbasierten Sprache Prolog so unglaublich trivial und prägnant sein, die Suche in einer kleinen Liste auszudrücken, dass jeder Kommentar, den Sie hinzufügen, nur Rauschen ist. Gutes Kommentieren ist also notwendigerweise kontextabhängig. Dazu gehören Faktoren wie die Stärken der von Ihnen verwendeten Sprache und der gesamte Programmkontext.
Das Fazit lautet: Denken Sie an die Zukunft. Fragen Sie sich, was für Sie wichtig und offensichtlich ist, wie das Programm in Zukunft verstanden und geändert werden soll. [1]
Für diejenigen Teile Ihres Codes, die sich wirklich selbst dokumentieren, fügen Kommentare nur Rauschen hinzu und erhöhen das Kohärenzproblem für zukünftige Versionen. Fügen Sie sie dort also nicht hinzu.
Fügen Sie jedoch für die Teile Ihres Codes, in denen Sie aus mehreren Optionen eine kritische Entscheidung getroffen haben oder in denen der Code selbst so komplex ist, dass sein Zweck undeutlich ist, Ihr spezielles Wissen in Form eines Kommentars hinzu. Ein guter Kommentar in einem solchen Fall ist einer, der einen zukünftigen Programmierer wissen lässt, was beibehalten werden muss - das ist übrigens das Konzept einer invarianten Behauptung - und was geändert werden kann.
[1] Dies geht über die Ausgabe von Kommentaren hinaus, aber es lohnt sich, darauf einzugehen: Wenn Sie feststellen, dass Sie eine sehr genaue Vorstellung davon haben, wie sich Ihr Code in Zukunft ändern könnte, sollten Sie wahrscheinlich über das einfache Erstellen eines Kommentars und das Einbetten dieser Parameter hinausdenken im Code selbst, da dies fast immer eine zuverlässigere Methode ist, um die Zuverlässigkeit zukünftiger Versionen Ihres Codes sicherzustellen, als Kommentare zu verwenden, um unbekannte zukünftige Personen in die richtige Richtung zu lenken. Gleichzeitig möchten Sie auch eine Überverallgemeinerung vermeiden, da Menschen die Zukunft notorisch schlecht vorhersagen können, was auch die Zukunft von Programmänderungen einschließt. Versuchen Sie also, vernünftige und bewährte Dimensionen der Zukunft auf allen Ebenen der Programmgestaltung zu definieren und zu erfassen.