Was sind Ihre "harten Regeln" für das Kommentieren Ihres Codes?

8

Ich habe die anderen Fragen gesehen , aber ich bin immer noch nicht zufrieden mit der Art, wie dieses Thema behandelt wird .

Ich möchte eine Liste mit Dingen extrahieren, die bei einer Code-Überprüfung auf Kommentare überprüft werden.

Ich bin mir sicher, dass die Leute Dinge sagen werden, die sich gegenseitig aufheben. Aber hey, vielleicht können wir für jedes Camp eine Liste erstellen. Für diejenigen, die nicht kommentieren, wird die Liste nur sehr kurz sein:)

    
alfinoba 27.09.2008, 02:58
quelle

21 Antwort

35

Ich habe eine einfache Regel zum Kommentieren: Dein Code sollte die Geschichte von dem erzählen, was du tust; Ihre Kommentare sollten die Geschichte erzählen, warum Sie es tun.

Auf diese Weise stelle ich sicher, dass derjenige, der meinen Code erbt, in der Lage ist, die Absicht hinter dem Code zu verstehen.

    
Franci Penov 27.09.2008 03:19
quelle
16
  1. Ich gebe öffentliche oder geschützte Funktionen mit Meta-Kommentaren an und treffe normalerweise die privaten Funktionen, wenn ich mich daran erinnere.
  2. Ich erkläre, warum ein hinreichend komplexer Codeblock existiert (Urteilsspruch). Der warum ist der wichtige Teil.
  3. Ich kommentiere, wenn ich einen Code schreibe, der meiner Meinung nach nicht optimal ist, aber ich lasse ihn, weil ich keinen klügeren Weg finde, oder ich weiß, dass ich später refaktorieren werde.
  4. Ich gebe einen Kommentar ab, um mich oder andere daran zu erinnern, dass fehlende Funktionalität oder anstehender Anforderungscode nicht im Code enthalten ist (TODO usw.).
  5. Ich erkläre, um komplexe Geschäftsregeln zu erklären, die sich auf eine Klasse oder einen Codeabschnitt beziehen. Ich bin dafür bekannt, mehrere Absätze zu schreiben, um sicherzustellen, dass der nächste Typ / Mädchen weiß, warum ich eine Zeilenklasse geschrieben habe.
Jason Jackson 27.09.2008 03:13
quelle
12

Wenn ein Kommentar veraltet ist (nicht mit dem Code übereinstimmt), löschen Sie ihn oder aktualisieren Sie ihn. Lassen Sie niemals einen ungenauen Kommentar an Ort und Stelle.

    
Jason Etheridge 27.09.2008 03:00
quelle
6

Schreibe einen lesbaren Code, der so gut wie möglich selbsterklärend ist. Fügen Sie Kommentare hinzu, wenn Sie Code schreiben müssen, der zu komplex ist, um ihn auf einen Blick zu verstehen. Fügen Sie auch Kommentare hinzu, um den Geschäftszweck hinter dem Code zu beschreiben, den Sie schreiben, um die Pflege in Zukunft einfacher zu gestalten.

    
JoshL 27.09.2008 03:02
quelle
5
  

Dokumentation ist wie Sex; wenn es   gut, es ist sehr, sehr gut und wann   es ist schlecht, es ist besser als nichts

    
Pablo Fernandez 27.09.2008 03:01
quelle
4

Wenn Sie eine RFC oder eine andere Protokollspezifikation implementieren, kommentieren Sie State Machines / Event Handler / etc mit dem Abschnitt der Spezifikation, dem sie entsprechen. Stellen Sie sicher, dass Sie die Version oder das Datum der Spezifikation auflisten, falls sie später überarbeitet wird.

    
DGentry 27.09.2008 03:04
quelle
4

Die Kommentare, die Sie schreiben, können über die Qualität Ihres Codes aufschlussreich sein. Unzählige Male habe ich Kommentare in meinem Code entfernt, um sie durch besseren, klareren Code zu ersetzen. Dazu folge ich ein paar Anti-Kommentar-Regeln:

  • Wenn Ihr Kommentar lediglich eine Codezeile erklärt, sollten Sie diese Codezeile entweder für sich sprechen lassen oder in einfachere Komponenten aufteilen.
  • Wenn Ihr Kommentar einen Codeblock innerhalb einer Funktion erklärt, sollten Sie stattdessen eine neue Funktion erklären.

Das sind wirklich die gleichen Regeln, die für zwei verschiedene Kontexte wiederholt werden.

Die anderen, normaleren Regeln, denen ich folge, sind:

  • Dokumentieren Sie bei Verwendung einer dynamisch typisierten Sprache die Erwartungen, die wichtige Funktionen an ihre Argumente stellen, sowie die Erwartungen, die Anrufer an die Rückgabewerte stellen können. Wichtige Funktionen sind diejenigen, die jemals nicht-lokale Anrufer haben.
  • Wenn Ihre Logik durch das Verhalten einer anderen Komponente diktiert wird, ist es gut zu dokumentieren, was Ihr Verständnis und Ihre Erwartungen an diese Komponente sind.
Logan 27.09.2008 03:11
quelle
3

Normalerweise kommentiere ich eine Methode, bevor ich sie schreibe. Ich schreibe ein oder zwei Kommentare für jeden Schritt, den ich innerhalb der Funktion ausführen muss, und schreibe dann den Code zwischen den Kommentaren. Wenn ich fertig bin, ist der Code bereits kommentiert.

Das Tolle daran ist, dass es kommentiert wurde, bevor ich den Code schreibe, also gibt es keine unangemessenen Annahmen über das vorherige Wissen in den Kommentaren; Ich selbst wusste nichts über meinen Code, als ich sie schrieb. Dies bedeutet, dass sie leicht zu verstehen sind, so wie sie sein sollten.

    
Lucas Oman 27.09.2008 03:54
quelle
2

Ich habe einen ganzen Artikel über schlechte Kommentare geschrieben. Viel Spaß mit:)

Wie schlechte Kommentare in Ihrem Code entstehen

    
Daniel 27.09.2008 03:05
quelle
2

Es gibt keine harten Regeln - harte Regeln führen zu Dogmen und Menschen folgen im Allgemeinen Dogmen, wenn sie nicht schlau genug sind, selbst zu denken.

Die Richtlinien Ich folge:

1 / Kommentare sagen, was gemacht wird, Code sagt, wie es gemacht wird - dupliziere deine Bemühungen nicht.

2 / Kommentare sollten sich auf Code-Blöcke beziehen, nicht auf jede Zeile. Dazu gehören Kommentare, die ganze Dateien, ganze Funktionen oder nur einen komplizierten Codeschnipsel erklären.

3 / Wenn ich denke, dass ich in einem Jahr zurückkommen und die Code / Kommentar-Kombination nicht verstehen würde, sind meine Kommentare noch nicht gut genug.

    
paxdiablo 27.09.2008 04:17
quelle
2

Eine großartige Regel für Kommentare: Wenn Sie Code durchlesen, der versucht, etwas herauszufinden, und ein Kommentar irgendwo Ihnen die Antwort gegeben hätte, setzen Sie es dort, wenn Sie die Antwort kennen .

Verbringe die Zeit nur damit, einmal zu untersuchen .

Schließlich wirst du wissen, während du schreibst die Orte, an denen du die Führung verlassen musst, und die Orte, die ausreichend offensichtlich sind, um alleine zu stehen. Bis dahin wirst du Zeit damit verbringen, deinen Code zu durchsuchen, um herauszufinden, warum du etwas getan hast:)

    
Rich 27.09.2008 06:28
quelle
1

Ich dokumentiere jede Klasse, jede Funktion, jede Variable innerhalb einer Klasse. Einfache DocBlocks sind der Weg nach vorn.

Ich schreibe diese Docblocks im Allgemeinen mehr für automatisierte API-Dokumentation als alles andere ...

Zum Beispiel der erste Abschnitt einer meiner PHP-Klassen

%Vor%

Aber dann dokumentiere ich manchmal auch wichtigen Code (aus meiner init.php

) %Vor%

Und wenn es nicht selbsterklärend ist, warum etwas auf eine bestimmte Weise etwas tut, werde ich das kommentieren

    
Mez 27.09.2008 03:22
quelle
1

Ich erstelle am Anfang meines Codes einen Kommentarblock, der den Zweck des Programms, das Datum der Erstellung, alle Lizenz- / Copyright-Informationen (wie GPL) und den Versionsverlauf auflistet.

Ich sage oft zu meinen Importen, wenn es nicht offensichtlich ist, warum sie importiert werden, vor allem, wenn das gesamte Programm anscheinend keine Importe benötigt.

Ich füge jeder Klasse, Methode oder Funktion einen Docstring hinzu und beschreibe, was der Zweck dieses Blocks ist und welche zusätzlichen Informationen ich für notwendig halte.

Ich habe normalerweise eine Demarkationslinie für Abschnitte, die verwandt sind, z. Widget-Erstellung, Variablen usw. Da ich SPE für meine Programmierumgebung verwende, werden diese Abschnitte automatisch hervorgehoben und die Navigation erleichtert.

Ich füge TODO-Kommentare während der Codierung als Erinnerungen hinzu. Es ist eine gute Möglichkeit, mich selbst daran zu erinnern, den Code zu refaktorieren, wenn er einmal korrekt funktioniert.

Abschließend möchte ich einzelne Zeilen kommentieren, die eine Klärung erfordern oder anderweitig einige Metadaten für mich selbst in der Zukunft oder andere Programmierer benötigen.

Ich persönlich hasse es, Code zu betrachten und herauszufinden, was er tun soll. Wenn jemand einfach einen einfachen Satz schreiben könnte, um das zu erklären, ist das Leben einfacher. Selbstdokumentierender Code ist in meinem Buch eine falsche Bezeichnung.

    
crystalattice 27.09.2008 06:51
quelle
1

Ich konzentriere mich auf warum . Denn das was ist oft gut lesbar. TODOs sind auch großartig, sie sparen viel Zeit.

Und ich dokumentiere Schnittstellen (zum Beispiel Dateiformate).

    
Toon Krijthe 27.09.2008 11:27
quelle
0

Nur Vorstufen; Geben Sie die einzelne Verantwortlichkeit einer Klasse, Anmerkungen oder Kommentare und das Änderungsprotokoll an. Was Methoden betrifft, ist es an der Zeit, wenn eine Methode wesentlich kommentiert werden muss.

    
moffdub 27.09.2008 03:16
quelle
0

Wenn Sie Kommentare schreiben, halten Sie inne, reflektieren Sie und fragen Sie sich, ob Sie den Code ändern können, damit die Kommentare nicht benötigt werden. Könnten Sie einige Variablen-, Klassen- oder Methodennamen ändern, um die Dinge klarer zu machen? Würden einige assert s oder andere Fehlerprüfungen Ihre Absichten oder Erwartungen kodifizieren? Könnten Sie einige lange Codeabschnitte in klar benannte Methoden oder Funktionen aufteilen? Kommentare spiegeln oft unsere Unfähigkeit wider, klar zu schreiben (a-hem, code). Es ist nicht immer einfach, mit Computersprachen klar zu schreiben, aber nehmen Sie sich etwas Zeit, um es zu versuchen ... weil Code niemals lügt.

P.S. Die Tatsache, dass Sie Zitate um "harte Regeln" verwenden, sagt es. Regeln, die nicht erzwungen werden, sind keine "harten Regeln" und die einzigen Regeln, die erzwungen werden, sind im Code.

    
Pat Notz 27.09.2008 03:24
quelle
0

Ich füge einen Kommentar zu einem Code-Block hinzu, der fasst, was ich gerade mache. Dies hilft Menschen, die nach einer bestimmten Funktionalität oder einem bestimmten Codeabschnitt suchen.

Ich erkläre jeden komplexen Algorithmus oder Prozess, der auf den ersten Blick nicht verstanden werden kann.

Ich unterschreibe meinen Code.

    
J.J. 27.09.2008 04:34
quelle
0

Der einzige garantierte Ort, an dem ich Kommentare hinterlassen habe: TODO Abschnitte. Der beste Ort, um Dinge zu verfolgen, die überarbeitet werden müssen, ist genau dort im Code.

    
Rich 27.09.2008 06:31
quelle
0

Meiner Meinung nach sind TODO / TBD / FIXME usw. in Code, an dem gerade gearbeitet wird, in Ordnung, aber wenn Sie Code sehen, der in 5 Jahren nicht berührt wurde und voll davon ist, dann erkennen Sie das es ist eine ziemlich miese Art, dafür zu sorgen, dass die Dinge repariert werden. Kurz gesagt, TODO Notizen in Kommentaren neigen dazu, dort zu bleiben . Besser, einen Bugtracker zu verwenden, wenn Sie Dinge haben, die irgendwann behoben werden müssen.

Hudson (CI-Server) hat ein großartiges Plugin, das nach TODOs sucht und feststellt, wie viele es in Ihrem Code gibt. Sie können sogar Schwellenwerte setzen, die dazu führen, dass der Build als instabil klassifiziert wird, wenn zu viele davon vorhanden sind.

Meine Lieblingsfaustregel zu Kommentaren lautet: Wenn der Code und die Kommentare nicht übereinstimmen, sind beide wahrscheinlich falsch

    
JesperE 01.10.2008 21:21
quelle
0

Eine wirklich wichtige Sache, nach der Sie beim Überprüfen der Header-Dokumentation (oder wie immer Sie den Block vor der Methodendeklaration aufrufen) suchen, ist, dass Anweisungen und Vorbehalte leicht zu erkennen sind.

Direktiven sind Anweisungen, die den Client betreffen: nicht vom UInthread aufrufen, nicht im leistungskritischen Code verwenden, X vor Y aufrufen, Rückgabewert nach der Verwendung freigeben , usw.

Vorbehalte sind alles, was eine böse Überraschung sein könnte: verbleibende Aktionselemente, bekannte Annahmen und Einschränkungen usw.

Wenn Sie sich auf eine Methode konzentrieren, die Sie schreiben und untersuchen, sehen Sie alles. Wenn ein Programmierer Ihre Methode und dreißig andere in einer Stunde verwendet, können Sie sich nicht auf ein gründliches Lesen verlassen. Ich kann Ihnen Forschungsdaten senden, wenn Sie interessiert sind.

    
Uri 01.10.2008 21:27
quelle
0

Wir haben einen Artikel über Kommentare geschrieben (eigentlich habe ich mehrere davon gemacht): Ссылка

Es ist wirklich einfach: Kommentare werden geschrieben, um Ihnen zu sagen, was der Code nicht kann.

Dies führt zu einem einfachen Prozess:  - Schreiben Sie einen beliebigen Kommentar auf den ersten.  - Verbessere den Code, damit der Kommentar überflüssig wird  - Löschen Sie den jetzt redundanten Kommentar.  - Nur Code, der keine redundanten Kommentare enthält, committen

    
Tim Ottinger 17.11.2011 22:06
quelle