Aus mehreren Gründen kommentiere ich während der Entwicklung manchmal Code aus. Da ich chaotisch bin und es manchmal eilig habe, schaffen es einige von ihnen zur Quellcodeverwaltung.
Ich benutze auch Kommentare, um Codeblöcke zu klären.
Zum Beispiel:
MyClass MyFunction()
{
(...)
// return null; // TODO: dummy for now
return obj;
}
Obwohl es "funktioniert" und viele Leute es auf diese Weise tun, ärgert es mich, dass Sie auskommentierten Code nicht automatisch von "echten" Kommentaren unterscheiden können, die den Code verdeutlichen:
- Es fügt Rauschen hinzu, wenn versucht wird, Code zu lesen
- Sie können nicht nach auskommentiertem Code suchen, z. B. nach einem On-Commit-Hook in der Quellcodeverwaltung.
Einige Sprachen unterstützen mehrere einzeilige Kommentarstile - zum Beispiel in PHP, die Sie entweder verwenden können //
oder #
für einen einzeiligen Kommentar - und Entwickler können sich darauf einigen, einen dieser Stile für auskommentierten Code zu verwenden:
# return null; // TODO: dummy for now
return obj;
Andere Sprachen - wie C #, das ich heute verwende - haben einen Stil für einzeilige Kommentare (richtig? Ich wünschte, ich hätte mich geirrt). Ich habe auch Beispiele für das "Auskommentieren" von Code unter Verwendung von Compiler-Direktiven gesehen, was für große Codeblöcke großartig ist, aber für einzelne Zeilen ein wenig übertrieben, da für die Direktive zwei neue Zeilen erforderlich sind:
#if compile_commented_out
return null; // TODO: dummy for now
#endif
return obj;
Sollte "deaktivierter Code" nicht eine eigene Syntax in den Sprachspezifikationen erhalten, da das Auskommentieren von Code in jeder (?) Sprache erfolgt? Sind die Vorteile (Trennung von Kommentaren / deaktiviertem Code, Editoren / Quellcodeverwaltung) gut genug und die Nachteile ("sollte sowieso nicht auskommentieren", kein funktionaler Teil einer Sprache, potenzielle IDE-Verzögerung (danke Thomas))))) )) Opfer wert?
Bearbeiten
Mir ist klar, dass das Beispiel, das ich verwendet habe, albern ist. Der Dummy-Code kann leicht entfernt werden, da er durch den tatsächlichen Code ersetzt wird.
/# ... #/
das wäre anders in den IDE markiert (für visuelle Hinweise) und vielleicht einen Compiler generieren Warnung , die dann in der Nightly Build gefangen und berichtet würde, wenn jemand sich solche Änderungen wieder überprüfen in die Quellcodeverwaltung.Antworten:
Zunächst gibt es in Ihrem Beispiel "TODO" -Kommentare. Diese Arten von Kommentaren sind in gewisser Weise besonders, da sie von IDEs (zumindest Eclipse und Visual Studio) als Markierung für "Aufgaben" erkannt werden. Aber ich bin mir sicher, dass Sie das wissen, da Sie thme verwenden, und ich nehme an, dass Sie sich nicht auf sie beziehen, wenn Sie den Begriff "deaktivierter Code" verwenden.
Was den deaktivierten Code selbst betrifft, ist meine Meinung, dass er den Code verschmutzt. Ich benutze einen anderen Mechanismus, um zu verfolgen, was vorher da war: das Quell-Repository . Außer wenn ich mich in einem Code / Test / Code / Test ... -Modus befinde, kommentiere ich nicht verwendeten Code nicht, sondern entferne ihn. Und wenn es so ist, ist das Kommentieren von X-Zeilen nur eine Frage einer Tastenkombination.
Bearbeiten: Also ja, ich habe vergessen, Ihre explizite Frage zu beantworten. Ich denke, dass es nicht nützlich ist, spezielle Kommentare für deaktivierten Code zu haben. Wenn Sie den Code wirklich behalten möchten, aber "Nicht verwenden" sagen, können Sie ihn immer als @deprecated markieren, aber das war nicht der Punkt Ihrer Frage.
quelle
Ich denke, das ist die Wurzel des Problems. Chaotisch und gehetzt zu sein, wird nur Probleme mit sich bringen. Der erste Schritt sollte darin bestehen, herauszufinden, warum Ihre Entwicklung beschleunigt und nicht gut kontrolliert wird, und nicht zu versuchen, auskommentierten Code zu finden.
Das glaube ich nicht. Auskommentierter Code ist eine schlechte Praxis und ich denke nicht, dass Sprachen jemanden dazu ermutigen sollten, ihn zu verwenden. Ja, die Leute machen es und ich habe es gesehen, aber ich weigere mich, meinen Code einzuchecken, der auskommentiert ist. Menschen die Möglichkeit zu geben, unbenutzten, alten Code einfach zu verwalten, geht über den Rahmen einer Sprache hinaus und gehört in den Bereich der Versionskontrolle.
Ich mache mir auch Sorgen um technische Einschränkungen. Damit dies funktioniert, müssen Sie entweder Kommentare analysieren und feststellen, ob sie als Quelle oder Text auskommentiert sind, oder der Sprache ein neues Token hinzufügen. Abhängig von der aktuellen Komplexität der Sprache bin ich mir nicht ganz sicher, welche Auswirkungen dies auf die Kompilierung haben würde (Feststellung, ob eine Zeile gültiger zu kompilierender Code ist oder nicht). Außerdem würden die Benutzer dann erwarten, dass IDEs dies in Echtzeit verwalten (besteht ein Zusammenhang zwischen der Komplexität der Syntax einer Sprache und der Reaktionsfähigkeit der IDE beim Auffinden und Hervorheben verschiedener Konstrukte und Fehler).
quelle
Selbst wenn es nur eine Kommentarsyntax in der Sprache gibt, die Sie verwenden, können Sie dennoch Ihre eigene Variante hinzufügen. Ich habe an Projekten gearbeitet, bei denen // eine deaktivierte Zeile und // - einen Kommentar angegeben haben. Es ist nicht so schön wie es eingebaut zu haben, aber die meisten IDEs wissen nicht, dass Sie die verschiedenen Syntaxen für verschiedene Zwecke verwendet haben. Daher funktioniert manchmal die alte Art des Augapfelns, um den Unterschied zu erkennen, am besten.
quelle
Im Gegensatz zu den Antworten antworte ich mit "JA, es sollte eine andere Syntax geben!"
Ich würde jeden Entwickler herausfordern zu sagen, dass er auch nur einen Tag lang codiert, ohne den Code zu kommentieren. Dies bedeutet nicht, dass man die Quellcodeverwaltung nicht kennt oder faul ist. Selbst wie Thomas Owens in seiner abweichenden Antwort sagt: " Außer wenn ich mich in einem Code / Test / Code / Test ... -Modus befinde, kommentiere ich keinen unbenutzten Code. "
Wie viel Zeit verbringst du im Code / Test / Code / Test-Modus? Für mich sind das mindestens 90% der Arbeit! Im Moment konvertiere ich ein großes OSX-Projekt in iOS. Der erste Schritt bestand darin, den gesamten Code zu deaktivieren, der kaputt ging, bis ich einen funktionierenden Stub hatte. In den nächsten Wochen werde ich den Code langsam auskommentieren und korrigieren, sobald er funktioniert.
Es gibt auch viele andere Fälle. Was ist, wenn Sie Beispielcode verwenden, in dem Sie häufig Anweisungen wie "Kommentar für Windows auskommentieren" oder "Diese Zeile für Apps nur für das iPhone auskommentieren" finden?
Ja, ich werde die ganze Zeit die Quellcodeverwaltung verwenden. Aber auch JA, ich würde es lieben, wenn es eine Möglichkeit gibt, deaktivierten Code von tatsächlichen Kommentaren zu unterscheiden.
Zusammenfassend: Jeder Programmierer, der sagt, dass er keine Kommentare zum Deaktivieren von Code verwendet, lügt. Codierung beinhaltet mehr als die polierten Dateien, die Sie für HEAD festlegen. Es gibt viele gültige Gründe für deaktivierten Code.
Ja, es wäre schön, wenn es eine Syntax (oder zumindest eine Konvention) gäbe, um echte Kommentare von deaktiviertem Code zu unterscheiden.
quelle