Ich habe oft solche Kommentare gesehen:
function foo() {
...
} // foo
while (...) {
...
} // while
if (...) {
...
} // if
und manchmal sogar so weit wie
if (condition) {
...
} // if (condition)
Ich habe diese Praxis nie verstanden und sie daher nie angewendet. Wenn Ihr Code so lang ist, dass Sie wissen müssen, um welche Endung es sich }
handelt, sollten Sie ihn möglicherweise in separate Funktionen aufteilen. Außerdem können die meisten Entwickler-Tools auf die entsprechende Klammer zugreifen. Und schließlich ist der letzte für mich ein klarer Verstoß gegen das DRY-Prinzip; Wenn Sie die Bedingung ändern, müssen Sie daran denken, den Kommentar ebenfalls zu ändern (andernfalls kann er für den Betreuer oder sogar für Sie unübersichtlich werden).
Warum nutzen die Leute das? Sollten wir es benutzen oder ist es schlechte Praxis?
source-code
comments
gablin
quelle
quelle
if(condition): ... else: ... endif;
if ... then ... end if;
while ... loop ... end loop;
procedure Foo is ... end Foo;
. Ich finde, dass es der Lesbarkeit hilft (und es wird vom Compiler überprüft, welche Kommentare nicht sind).Antworten:
Ich würde sagen, wenn Ihr Code so lang ist, dass Sie Ihren Klammern nicht einfach folgen können, muss Ihr Code für die meisten Sprachen überarbeitet werden.
In Template-Sprachen (wie PHP) kann dies jedoch gültig sein, da Sie möglicherweise einen großen HTML-Block haben, der den Anfang und das Ende der Bedingung oder Schleifenstruktur voneinander trennt.
quelle
while():
endwhile;
undforeach():
endforeach;
Konstrukte usw.Es ist ein Code-Geruch und in der Regel ein Kater aus altmodischen Code-Stil. Vor anständigen IDEs war das Refactoring schwieriger und nicht mehr so häufig wie heute. Daher waren die Methoden länger, und diese Kommentare halfen, sie besser zu navigieren.
quelle
Dies ist eine schreckliche Praxis, die durch viele Faktoren überholt ist.
Ich stelle fest, dass viele Java-Programmierer diese Einstellung haben, und dadurch sieht der Java-Code sehr schmutzig aus und der Fokus wird vom Code weg und auf die Kommentare gerichtet.
Es wird dringend davon abgeraten, dies zu verwenden.
quelle
Code wird zehnmal häufiger gelesen als geschrieben.
Wenn es das Lesen erleichtert, tun Sie es.
Ich würde auch jedem empfehlen, dies zu tun, um die Lesbarkeit zu verbessern. Die Refactoring-Techniken, Klammern in verschiedenen Zeilen usw., die andere Leute erwähnt haben, sind alle gut. Es ist auch gut, die Dinge in verschiedene Funktionen, Methoden oder Klassen aufzuteilen, so dass sich der Code selbst kommentiert. Es gibt auch Möglichkeiten, die meisten "Wenn" - und "For" -Schleifen an offensichtlichen Stellen zu entfernen und so die Notwendigkeit einer der folgenden zu beseitigen.
Aber manchmal lernen die Leute. Wenn das etwas ist, das sie tun, um den Code wirklich lesbarer zu machen, ermutigen Sie ihn, und ermutigen Sie dann auch einige andere Praktiken. Menschen, die lernen, verdienen und werden von Ermutigung profitieren, unabhängig davon, wie sie anfangen. Das Sagen von "Das ist schlecht" ist nicht so nützlich wie das Sagen von "Das andere ist besser".
quelle
Ich habe eine große (C ++) Codebasis voller solcher Dinge:
Für etwas so Kleines würde ich sagen, dass dies über "Code-Geruch" hinausgeht und zu "Code-Gestank" führt. Besonders in einer IDE, in der ich die schließende Klammer mit einem Tastendruck abgleichen kann, um die öffnende Klammer zu finden. Bei einer längeren Methode werde ich die Klammerübereinstimmung trotzdem über den Terminalkommentar ziehen. Solche Kommentare lenken mich ab und ich neige dazu, sie als Lärm zu betrachten.
quelle
In C ++ gibt es zwei Holdovers, bei denen dies immer noch nützlich ist und der Hinweis "Code aufteilen" nicht unbedingt gilt:
Für Namespaces. Ein Namespace kann eine ganze Datei umfassen, und diese letzte Klammer kann manchmal Personen aus der Welt werfen. Daher ist es hilfreich, einen Kommentar hinzuzufügen, der angibt, dass die Klammer das Schließen eines Namespaces ist. Für den speziellen Codierungsstil in meiner Firma ist dies wichtig, da wir keine Namespaces einrücken, da entschieden wurde, dass eine solche Einrückung nur Speicherplatz in einer Datei verschwenden würde.
Für #ifdef / #endif-Paare. Manchmal ist dort viel Code für die bedingte Kompilierung enthalten, es kann beim Verschachteln unangenehm werden, und der Editor, den wir häufig "hilfreich" verwenden, beseitigt Einrückungen, sodass die Kommentare für einen schnellen Überblick nützlich sind.
quelle
Für mich muss der Code verwirrend sein, um einen Kommentar wie den von Ihnen angegebenen hinzuzufügen.
Wenn nur // IF-Anweisung steht. Dann muss man sich fragen, warum es überhaupt da ist.
quelle
//endif
Die Alternative, um zu sehen, was Ihre Zahnspange schließt, besteht darin, dass sich die öffnende in derselben Spalte befindet wie die schließende. Ich finde das viel klarer und lesbarer.
Der Kommentar ist nützlich, wenn es normalerweise schwierig ist, den Verlauf zu verfolgen, da das Öffnen vor langer Zeit stattgefunden hat. Dies sollte normalerweise nur für einen Namespace geschehen (insbesondere für den anonymen in C ++, der für Implementierungsdetails in der Kompilierungseinheit verwendet wird). In den meisten anderen Fällen sollte es offensichtlich sein, was Sie schließen.
quelle
Dies ist größtenteils ein Überbleibsel aus der Vergangenheit, als Sie in 80x24-Zeichen-Terminalfenstern gearbeitet haben, insbesondere wenn Sie einen Editor mit Fenstern wie EVE verwendet haben. Selbst jetzt erledige ich den größten Teil meiner Arbeit in einer Terminalsitzung mit vim, und ich kann die Sitzung in drei oder vier Unterfenster aufteilen, sodass ich immer nur ein paar Zeilen gleichzeitig sehen kann.
Das heißt, ich habe mich nie wirklich auf die Convention erwärmt, obwohl das meinen Speck bei mehr als einer Gelegenheit gerettet hätte. Ich sehe es nur als Lärm. Wenn Ihre Schleifen oder Bedingungen so groß werden, sollten Sie sich mit Refactoring befassen.
quelle
Sie geben grundsätzlich alle gültigen Gründe an, warum Sie dies nicht verwenden sollten. Jeder anständige Programmierer sollte diese anwenden. Warum benutzen die Leute es? Weil sie es falsch machen und es nicht besser wissen.
quelle