Schreiben Sie Titel in Codekommentare? [geschlossen]

17

Ich habe einen alten Code durchsucht, den ich geschrieben habe (erstes Jahr an der Universität), und festgestellt, dass ich Kommentartitel vor verschiedenen Teilen des Codes geschrieben habe. Sachen wie (das ist aus einem Monopoly-Spiel):

/*Board initialization*/
...code...

/*Player initialization*/
...code...

/*Game logic starts here*/
/*Displaying current situation*/
...code...

/*Executing move*/
...code...

/*Handle special event*/
...code...

/*Commit changes, switch to next player*/
...code...

Dies mag überflüssig und möglicherweise unnötig sein, wenn der Code wirklich sehr klar ist, aber als ich die Datei durchsuchte, war ich überrascht, wie stark ich das Gefühl hatte, zu wissen, was los ist, obwohl ich mich kaum mit dem eigentlichen Code befasst habe. Ich kann das definitiv als angemessen unter bestimmten Umständen ansehen, also frage ich mich - tun Sie das? Findest du das eine gute Idee? Oder ist es zu viel?

EpsilonVector
quelle

Antworten:

24

Dies ist ein Codegeruch. Das sagt was und nicht warum .

Wenn dies erforderlich ist, teilen Sie den Code in kleine Funktionen auf.

Maniero
quelle
4
Es hat keinen Sinn, Funktionen zu haben, um Funktionen zu haben.
Paul Nathan
30
ist richtig: Wenn Code einen Kommentar wie verdient /*Board initialization*/, sollte er wahrscheinlich in einer Funktion namens sein InitializeBoard. Wenn Ihre Codestruktur klar genug ist, brauchen Sie keine Kommentare.
Tim Robinson
3
Das "Was" ist gut zu wissen und oft nicht offensichtlich, wenn man sich den Code ansieht. Diese Kommentare machen die allgemeine Absicht deutlich.
DarenW
4
@DarenW - aber auch Funktionen / Prozeduren / Methoden. Und letztere haben den zusätzlichen Vorteil, dass sie den Code modularisieren, was das Verständnis erleichtert .
Stephen C
3
Ein weiterer Vorteil davon ist, dass Funktionen wie InitializeBoardoder InitializePlayerin Funktions- / Modul- / Klassenbrowserlisten der meisten IDEs erscheinen, Kommentare jedoch nicht. Einfachere Navigation.
Steve Fallows
13

Das mache ich die ganze Zeit. Beides, um zu markieren, was der Code tut, und wahrscheinlich, wie Sie sagten, um das Scannen und Auffinden eines Codeblocks zu vereinfachen. Manchmal schreibe ich auch einen involvierten Prozess in Kommentare und 'fülle' den Code unter den Kommentaren aus, während ich gehe.

GroßmeisterB
quelle
7
+1 - Klarheit ist eine gute Sache. Ich bin mit der genehmigten Antwort nicht einverstanden, dass dies ein Codegeruch ist. Wenn es mehr Klarheit schafft - machen Sie es.
quick_now
2
Wenn es gegen OAOO verstößt, dann tu es nicht. Es ist überflüssig und neigt dazu, nicht mehr mit dem dokumentierten Code synchron zu sein. Fügen Sie den Code in eine Funktion ein und benennen Sie die Funktion mit dem, was sie tut. Moderne IDEs machen es einfach, den Funktionsnamen zu ändern und alle Referenzen zu aktualisieren. Auf diese Weise bleiben alle Instanzen auf dem neuesten Stand.
Scott Whitlock
3
+1 von mir. In großen Codedateien möchte ich mehr als nur Leerzeichen, die logische Abschnitte trennen. Ja, ich denke, wenn Ihre Funktion zu lang ist, müssen Sie sie aufteilen, aber ich finde es viel einfacher zu lesen, wenn Teile durch Kommentare getrennt sind.
Anthony
6

Ich finde es interessant, wie viele Menschen die Praxis nicht mögen, ohne wirklich artikulieren zu können, warum. Der Grund, warum Kommentare wie diese missbilligt werden, ist, dass sie ein Zeichen dafür sind, dass Sie gegen das Prinzip der alleinigen Verantwortung verstoßen haben. Dieser spezifische Name wird normalerweise nur in einem OO-Kontext verwendet, aber das allgemeine Konzept wird auch als Zusammenhalt bezeichnet und gilt für andere Paradigmen. In der Regel unterrichten Schulen solche Gestaltungsprinzipien erst gegen Ende eines Studiengangs, wenn überhaupt. Tatsächlich schreiben einige Lehrer die Verletzung vor, um die Bewertung zu vereinfachen, indem sie alles in eine Datei packen. Daher ist Ihre Unwissenheit als Neuling entschuldbar, und die Tatsache, dass Sie "etwas" falsch bemerkt und versucht haben, mit Kommentaren zu klären, ist unter den gegebenen Umständen sogar lobenswert. Im Allgemeinen ist es jedoch besser, ein unklares Design zu reparieren, als es mit Kommentaren zu überschreiben.

Karl Bielefeldt
quelle
4

Ich betrachte diese Dinge als eine Möglichkeit, den Code klarer zu machen oder nicht. Wenn Sie auf die Methoden in der Datei tell basieren kann , was jeder Teil besteht dann besteht keine Notwendigkeit , aber wenn Sie haben mehrere Abschnitte haben , dann kann es nützlich sein. Wenn eine Codedatei zu groß wird, muss sie möglicherweise aufgelöst werden, was die Notwendigkeit solcher Kommentare verringert.

Ich würde sagen, wenn Sie in einem Team arbeiten, um einen Standard zu entwickeln, codieren und kommentieren Sie zumindest alle auf die gleiche Weise, damit das Betrachten des Codes einfacher wird.

aqwert
quelle
3

Ich mache das, weil ich oft meine Absicht mit mir selbst kommuniziere oder im Grunde genommen ein Lesezeichen für Dinge wie "Datenbereinigung beginnt hier" einsetze. Normalerweise wird unter diesem Titel ein kurzer Einblick in die Logik dessen gegeben, was ich mache und warum.

Ich mag Redundanz. Wenn ich mein Laborheft aus dem einen oder anderen Grund verliere oder den Code, den ich vor Jahren geschrieben habe, erneut lesen muss, mag ich es nicht, zusammenzufügen, was ich getan habe und warum ich es getan habe. Wenn zumindest ein Teil dieser Logik im Code enthalten ist, ist sie dokumentiert genug, damit ich zumindest wieder damit arbeiten kann.

Ich denke, ein Teil meiner Neigung dazu ist statistisch und daher etwas repetitiv. Während es einige Codeteile gibt, in denen ich nach einer hilfreichen Funktion mit Namen suchen muss, kann ich einige Dutzend ziemlich ähnliche Verwendungen einer allgemeinen linearen Modellfunktion haben. Es ist nützlich, in der Lage zu sein, herauszufinden, welcher der Codes "Wie empfindlich sind die Ergebnisse für den Code" Choice A vs. Das wird oft durch Titel beschleunigt.

Fomite
quelle
Kommentare, in denen der Geschäftszweck / übergeordnete Zweck genannt wird, sind sehr wertvoll. Sie ermöglichen die Bestätigung und das Verständnis des Supports. Unit-Tests können auch als redundant eingestuft werden. Ich würde vorschlagen, dass das Dokumentieren und Verstehen von Code mindestens genauso wichtig ist wie das Testen.
Thomas W
2

Ich denke, dass dies in Situationen nützlich ist, in denen Sie gigantische Quelldateien mit Dutzenden von Funktionen haben und diese locker in solche Abschnitte organisieren können. Ich sage nicht, dass mir das besser gefällt als kleinere, fokussiertere Quelldateien ...

µBio
quelle