Es erscheint nicht nur in einer Sprache, dass Kommentare nicht verschachtelt werden können. Haben Sie eine gute Lösung für dieses Problem? Eine Problemumgehung in C / C ++ und Java besteht darin, nur den einzeiligen Kommentar zu verwenden. In diesem Fall ist es jedoch unmöglich, einen größeren Block auszukommentieren. Ich stehe vor so etwas:
</li><!--
<li><!-- Save -->
Also muss ich die Kommentare manuell durchgehen und bearbeiten. Können Sie uns in vielen Sprachen raten, wie wir damit umgehen sollen? Ich bin mir nicht sicher, aber vielleicht hat Python eine Lösung dafür '''
, wie man einen #
Kommentar in Python einfügen kann. `
'''
und"""
sind Zeichenkettenliterale . Es kommt vor, dass der Interpreter sie während der Kompilierung (zum Bytecode) auswertet und die String-Literale als No-Ops erkennt (daher verlangsamen sie nicht die Bytecode-Ausführung / Ladezeit). Dokumentzeichenfolgen, dh Zeichenfolgenliterale direkt nach einem,def
aber vor dem Textkörper, werden nicht entfernt, da der Interpreter davon ausgeht, dass sie die Dokumentation für die Funktion bereitstellen.#if 0
<code>#endif
. Das ist also kein wirkliches Problem. Das Verwenden von Kommentaren zu diesem Zweck ist das falsche Tool.Antworten:
Die beste Lösung ist natürlich, Ihre Kommentare einfach nicht zu verschachteln. Verschachtelte Kommentare sind normalerweise ein Zeichen dafür, dass Sie falsche Kommentare verwenden. Das gebräuchlichste Beispiel ist auskommentierter Code, der selbst Kommentare enthält, und die Korrektur besteht darin, den Code zu entfernen, anstatt ihn auszukommentieren.
Das heißt, viele Programmiersprachen haben mehr als eine Art von Kommentarsyntax, und Sie können diese Tatsache verwenden, um mindestens eine Ebene tief zu verschachteln. Zum Beispiel in Java:
Außerdem ist in vielen Sprachen mindestens ein Kommentartyp verschachtelbar. In C-ähnlichen Sprachen werden Zeilenkommentare in Zeilenkommentaren ignoriert:
Die meisten IDEs unterstützen das Kommentieren ganzer Codeblöcke mit Zeilenkommentaren in einer Aktion und behandeln diese Art von Kommentarstil korrekt. Das gleiche Beispiel in Python:
Häufig enthalten Codierungsstandards für ein bestimmtes Projekt Regeln darüber, welcher Kommentarstil wann verwendet werden soll. Eine übliche Konvention ist die Verwendung von Blockkommentaren (
/* */
) für die Dokumentation von Methoden und Klassen sowie von Inline-Kommentaren (//
) für Anmerkungen in Methodenkörpern und dergleichen, z.Bei einem solchen Stil ist es unwahrscheinlich, dass Sie jemals
/* */
Kommentare verschachteln müssen (wenn Sie ganze Methoden oder Klassen vorübergehend deaktivieren müssen, funktioniert das Umbenennen genauso gut, wenn nicht sogar besser). und//
Kommentare zu tun Nest, zumindest mit einer wenig Hilfe von Ihrem IDE.Zum Deaktivieren von Code stehen Ihnen in vielen Programmiersprachen weitere Optionen zur Verfügung. In C können Sie beispielsweise den Präprozessor nutzen:
In dynamischen Sprachen können Sie
if
stattdessen häufig nur reguläre Anweisungen verwenden:Im Gegensatz zum CPP-Beispiel erfordert diese Strategie jedoch, dass die Quelldatei als Ganzes syntaktisch gültig ist, sodass sie bei weitem nicht so flexibel ist.
Und schließlich gibt es zumindest einige Sprachen, die verschachtelte Kommentare zulassen. Bei Interesse hat Wikipedia eine schöne Vergleichstabelle .
quelle
// And now for something completely different...
C und C ++ haben geschachtelte Blockkommentare:
Viele Hervorhebungs-Editoren verstehen dies als Kommentar, und viele andere werden ihn zumindest als jeden anderen bedingt deaktivierten Code hervorheben.
In vielen anderen Sprachen müssen Sie sich auf die Unterstützung des Editors verlassen. Für Sprachen, die nur zeilenbasierte Kommentare enthalten (Perl, Python, Ruby, Shell ...), ist es ziemlich einfach, das Kommentarzeichen allen Zeilen in einem Bereich voran zu stellen, daher können die meisten Editoren dies tun. Sie können immer noch feststellen, was Kommentare waren, bevor Sie den gesamten Block auskommentieren, da das Kommentarzeichen verdoppelt ist - hier ist es einfach von Vorteil, dies zu tun.
XML und SGML sind wahrscheinlich die größten Probleme. Die Kommentardefinition ist einfach dumm. Die Kommentare wären trivial zu verschachteln gewesen, aber sie tun es nicht nur nicht, es ist völlig verboten,
--
Insider-Kommentare zu hinterlassen. Leider weiß ich nicht, welche Editoren das Auskommentieren in SGML / XML gut unterstützen.quelle
#if _
was auch gut funktioniert und in meinem VS mit Re # ausgegraut wird. Schöner Tipp!Eine Möglichkeit, dieses Problem zu lösen, ist die Verwendung der serverseitigen Vorlagenverarbeitungssprache, um Blockkommentare für verschachtelte Codekommentarelemente zu erstellen. Dadurch bleibt der Inhalt im Wesentlichen intakt, es wird jedoch verhindert, dass er an den Client-Browser gesendet wird.
Das hilft nicht viel, wenn es sich bei der Datei um reine Inhalte handelt, für die keine andere serverseitige Verarbeitung erforderlich ist. Fragen Sie in diesem Fall und im allgemeineren Fall von verschachtelten Kommentaren, warum Sie das tun möchten. In den meisten Fällen stellt man möglicherweise fest, dass der beste Weg, damit umzugehen, darin besteht, nicht mit allem umzugehen. Mit anderen Worten, wenn Sie einen Abschnitt entfernen möchten, müssen Sie ihn entfernen und die Versionskontrolle die Unterschiede berücksichtigen lassen, falls dieser Abschnitt als Artefakt jemals wiederbelebt werden muss.
quelle
Im HTML / XML-Fall können Sie eine nicht vorhandene Verarbeitungsanweisung verwenden: siehe meine Antwort auf SO
quelle
Swift unterstützt verschachtelte Kommentare, sodass "es nicht nur in einer Sprache vorkommt, dass Kommentare nicht verschachtelt werden können", keine echte Aussage mehr ist. Wenn Sie mit dem Mangel an Unterstützung für verschachtelte Kommentare in Ihrer Programmiersprache unzufrieden sind, würde ich empfehlen, Swift auszuprobieren.
Swift Programming Language: Die Grundlagen
quelle
Die Programmiersprache D enthält geschachtelte Kommentare:
Mit anderen Worten,
/+
und+/
Kommentare nisten.quelle