Während des Programmierens werden Sie einige Kommentare erhalten, die den Code erklären, und einige Kommentare, die den Code entfernen:
// A concise description
const a = Boolean(obj);
//b = false;
Gibt es eine gute Methode, um schnell zu analysieren, welche welche ist?
Ich habe mit der Verwendung von /
3en und /** */
für beschreibende Kommentare herumgespielt.
Ich habe auch ein VSCode-Plugin verwendet, um //TODO:
und hervorzuheben//FIXME:
///
und/** ... */
Kommentare werden auch von einigen Dokumentationsgeneratoren wie Doxygen oder JSDoc verwendet. Wenn Sie sie oder ähnliche Tools verwenden, können Sie diese Art von Kommentar möglicherweise nicht für beschreibende Kommentare verwenden, die nicht als Teil der Dokumentation gedacht sind.Antworten:
Hierfür gibt es eine sehr einfache Lösung: Entfernen Sie den auskommentierten Code.
Tatsächlich gibt es nur zwei gute Gründe, um Code zu kommentieren: um etwas zu testen / zu reparieren oder um Code zu speichern, den Sie möglicherweise später verwenden. Wenn Sie etwas testen oder reparieren, entfernen Sie den auskommentierten Code, sobald Sie den Test oder die Fehlerbehebung abgeschlossen haben. Wenn Sie Code speichern, den Sie möglicherweise später verwenden, erstellen Sie ihn als erstklassigen Code und speichern Sie ihn an einem Ort, z.
quelle
Das Hinzufügen @ RobertHarvey die ausgezeichnete Antwort glaube ich , es nur einen legitimen Grund ist die ich je für das Speichern von kommentierten Code zur Quellcodeverwaltung gestoßen, auch nur vorübergehend: bei nicht offensichtlichen Ersatz - Code, der sollte jetzt nicht oder aus irgendeinem Grund nicht verwendet werden kann , . Selbst dann sollte der Großteil des Kommentars die Erklärung sein, nicht der Ersatzcode. Dies könnte ein Fehler oder eine Eigenschaft der Sprache sein, die noch nicht als stabil angesehen wird. Es könnte ungefähr so aussehen:
In diesem Fall ist die Arbeit bereits erledigt, Sie können sie jedoch noch nicht nutzen. Wenn Sie sie löschen, muss sie später erneut entdeckt werden. Gleiches gilt für suboptimale Lösungen, die auf den ersten Blick überlegen erscheinen können, oder für bewusste Kompromisse mit ähnlichen Lösungen .
Achtung: Verunreinigen Sie Ihren Code nicht mit alternativen Lösungen. Jede Aufgabe kann auf unendlich viele verschiedene Arten erledigt werden, und es ist nicht wirtschaftlich, diesen Raum für jede Änderung über einen langen Zeitraum zu erkunden. Code Reviews können ein guter Ort sein, um solche fehlenden Kommentare zu entdecken, wenn Ihr Kollege eine Verbesserung vorschlägt, die Sie bereits als suboptimal erkannt haben.
quelle
frobnicate(bar)
, damit niemand mitkommt und versucht, Ihren "uneleganten" Code zu "reparieren". Sie zeigen ihnen also, dass Sie wissen, dass in einer perfekten Welt diefrobnicate
Funktion der richtige Weg ist, aber Sie wissen aus schmerzhaften Erfahrungen, dass sie nicht richtig funktioniert. Es kann keine Erwartung bestehen, dass der Dritte es überhaupt für einen Fehler hält, geschweige denn, dass es sich lohnt, ihn zu beheben. Sie müssen den zukünftigen Programmierern (einschließlich Ihnen selbst) noch einen Kommentar dazu hinterlassen, warum Sie nicht den offensichtlichen Ansatz gewählt haben.Hmm, ich habe diese Frage etwas anders gelesen als Robert, der zu Recht behauptet, dass auskommentierter Code entfernt werden sollte.
Wenn Sie jedoch nach einer Konvention suchen, mit der Code zum späteren Entfernen markiert wird, ist einer meiner alten Favoriten:
//b = false; //TODO: remove
Einige IDE-Flag-
//TODO:
Kommentare oder können gelehrt werden. Wenn nicht, ist es normalerweise eine durchsuchbare Zeichenfolge. Befolgen Sie am besten die Konventionen Ihres Shops, da dies auf verschiedene Arten erfolgen kann. Jede Codebasis sollte dies auf eine Weise tun. Hält es durchsuchbar.Ohne diese Markierung erfolgt dies automatisch mit dem Compiler. Wenn das Entfernen des Kommentars zu kompiliertem Code führt, muss es sich um kommentierten Code handeln. Schreiben eines IDE-Plugins, das prüft, ob dies nicht schwierig ist. Aber es wird fehlerhaft kommentierten Code hinterlassen.
Aus diesem Grund ist es besser, auskommentierten Code einfach als Code zu markieren, sobald Sie ihn auskommentieren. Auf diese Weise können Sie zerstörungsfrei arbeiten, während Sie entscheiden, ob Sie es wirklich wollen. Da wir alle unterbrochen werden und etwas vergesslich sind, wundern Sie sich nicht, wenn in diesem Zustand einige Zeilen eingecheckt werden. Wenn sie es tun, ist es schön, dass sie zumindest deutlich gekennzeichnet und durchsuchbar sind. Tastaturmakros haben mir in der Vergangenheit dabei geholfen. Es ist schwer, in der Mitte davon unterbrochen zu werden, wenn Sie es mit einem einzigen Tastendruck tun können.
Sie können dies so weit führen, dass Sie die Marke in Ihren kontinuierlichen Integrationstests verankern. Hoppla, ich versuche erneut, bei hervorragenden TODOs einzuchecken.
quelle
double buffer (flip on)
-> C-Prototyp oder ultra-knappe Englisch? Ich kann es nicht ohne Kontext sagen, kein korrektes vollständiges Konstrukt in einer der beiden Sprachen. Einige falsch-positive und -negative sind unvermeidlich, wenn Kommentare ihrer Natur nach die Form ihres Inhalts in keiner Richtung einschränken.Ich verwende Präprozessor-Direktiven, um Code zu entfernen, keine Kommentare:
Das macht das Suchen sehr einfach und mein Syntax-Textmarker behandelt es als Kommentar. Ich kann es sogar zu einer einzigen Zeile zusammenfassen:
#if FALSE(...)
Sie können diese Idee erweitern, um mehrere Optionen zu haben:
Und Fehlerüberprüfung zur Kompilierungszeit:
Natürlich wollen Sie nicht über Bord gehen, oder es wird schwierig zu sagen, was tatsächlich kompiliert wird und was nicht. Aber Sie haben die Idee, und es ist sowieso das gleiche Problem wie für kommentierten Code ... solange Sie ihn nur statisch verwenden. Wenn Ihre Bedingungen dynamisch sind, ist es schlimmer.
Um herauszufinden, welche Codebasis welche ist, die dieses Problem überhaupt nicht berücksichtigt hat, gibt es meines Erachtens keine universelle Lösung. Sie müssen selbst Muster finden und wahrscheinlich einen regulären Ausdruck codieren, um sie zu finden.
quelle
javascript
. Sie könnten eine Vorverarbeitung durchführen, aber dies wird die Fähigkeiten des Build-Systems erweitern und auch nicht dem Standard entsprechen. Wenn Sie kein Build-System haben oder das Build-System das Parsen und Ausführen von Code überhaupt nicht unterstützt, können Sie diese Lösung nicht implementieren. Schließlich wird die Frage nicht einmal angesprochen - auskommentierter Code entspricht nicht unbedingt dem Code, der bedingt aktiviert ist. Es könnte sich um einen Rest handeln, der nicht aktiviert werden soll.Ich stimme der Antwort zu, dass alter Code entfernt und nicht auskommentiert werden sollte, obwohl ich in den wenigen Fällen, in denen auskommentierter Code benötigt wird, eine Konvention eingehalten habe.
(Meine Basis ist C #, aber dies kann auf jede C-Syntax-Sprache angewendet werden, zB Java)
quelle
//
die erste Spalte hinzu, und da praktisch der gesamte Code eingerückt ist, beginnt der Kommentar praktisch immer mit einigen Tabulatoren. Normale Kommentare erhalten von mir kein führendes Leerzeichen, es sei denn, es gibt bereits andere Kommentare mit einem führenden Leerzeichen in der Nähe. Daher würde Ihre Methode bei Kommentaren, die ich erstellt habe, miserabel scheitern, und jede Methode, die zum Erkennen meiner Kommentarmuster entwickelt wurde, würde bei Ihren Kommentaren miserabel scheitern.Ich interpretiere die Frage immer noch anders und denke, Sie möchten auskommentierten Code finden.
C-Code muss Semikolons enthalten, während in Kommentaren Semikolons unwahrscheinlich sind. Für einzeiligen auskommentierten Code können Sie also diesen regulären Ausdruck verwenden:
Bei mehrzeiligem auskommentiertem Code könnte es sein
Hinweis: Visual Studio ist etwas eigenartig in Bezug auf Zeilenumbrüche in regulären Ausdrücken. Sie zählen nicht als Leerzeichen. Sie müssen ein explizites \ n angeben.
quelle
Wenn Sie einen Editor mit einem im Hintergrund laufenden Compiler (wie Xcode und Clang) verwenden, können Sie einfach versuchen, den Text des Kommentars zu kompilieren. Zum Beispiel gibt "eine kurze Beschreibung" Fehler aus, "b = false;" nicht. Sie könnten dann eine andere Syntaxhervorhebung verwenden.
Eine einfachere Methode wäre ein IDE-Plugin, das einige Heuristiken verwendet, z. B. mehrere Wörter in einer Reihe, außer Schlüsselwörtern, die auf Kommentare verweisen, geschweifte Klammern, die auf Code verweisen usw.
quelle
Andere Antworten haben Variationen des Themas "Code nicht auskommentieren" behandelt. Aber manchmal möchten Sie es trotzdem als Referenz haben.
Wenn Sie den Code wirklich brauchen, um in der Nähe zu bleiben, ist es eine bessere Lösung, den Code mit "#if 0 ... #endif" zu umgeben, idealerweise mit einem Kommentar, aus dem hervorgeht, warum. Dies ist die empfohlene Strategie aus verschiedenen Codierungsstandards, einschließlich MISRA.
quelle
Zumindest für mich einfach - und in C / C ++. Die Kommentare in / * * / sind informativ. Testcode, der vorübergehend entfernt wird, wird mit führendem // auskommentiert.
Und es gibt gute Gründe, Testcode in der Datei zu belassen, aber auskommentiert, zumindest in der Art von Arbeit, die ich mache. Früher oder später wird jemand eine Änderung wünschen, die diesen Code benötigt. Das Aufheben des Kommentars für einen Block erfordert einen Editorbefehl, ebenso wie das erneute Kommentieren, wenn Sie fertig sind.
quelle
#ifdef __DEBUG ... #endif
oder welche benutzerdefinierte Definition Sie verwenden möchten.__DEBUG
ist aber schön, weil man oft nur die Projektkonfiguration ändern muss, um es zu bekommen. Mit den meisten IDEs können Sie jedoch auch Ihre eigenen Konfigurationen definieren, die Ihnen an dieser Stelle alles bieten.printf
/cout
oder Ähnliches verwenden, um neu geschriebenen Code richtig zu machen (was ich selbst zugegeben habe), ist es nicht sehr effektiv, sie dort zu belassen. Wenn jemand Änderungen vornehmen möchte und weiß, zu welchen Variablen er Informationen benötigt, kann er diese schnell und einfach neu schreiben.printf
Wenn dieser Entwickler jedoch nicht weiß, was benötigt wird, und alle dieseprintf
Anweisungen einfach auskommentiert, dann ist der riesige Textbereich drin Das Terminal wird ihnen wahrscheinlich auch nicht helfen.