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:
/* This is commented out!
Foo.bar.baz();
// And now for something completely different...
Quux.runWith(theMoney);
*/
Außerdem ist in vielen Sprachen mindestens ein Kommentartyp verschachtelbar. In C-ähnlichen Sprachen werden Zeilenkommentare in Zeilenkommentaren ignoriert:
// some_commented_out(code);
// // This is a comment inside the comment!
// // Still inside the nested comment.
// some_more_code_in(outer_comment);
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:
# some_commented_out(code)
# # This is a comment inside the comment!
# # Still inside the nested comment.
# some_more_code_in(outer_comment)
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.
/**
* Helper class to store Foo objects inside a bar.
*/
public class Foobar {
/**
* Stores a Foo in this Foobar's bar, unless the bar already contains
* an equivalent Foo.
* Returns the number of Foos added (always 0 or 1).
*/
public int storeFoo(Foo foo) {
// Don't add a foo we already have!
if (this.bar.contains(foo)) {
return 0;
}
// OK, we don't have this foo yet, so we'll add it.
this.bar.append(foo);
return 1;
}
}
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:
this_is(activated);
#if 0
this_is(!activated);
/* Comments inside this block don't really nest, they are simply removed
along with the rest of the block! */
#endif
In dynamischen Sprachen können Sie if
stattdessen häufig nur reguläre Anweisungen verwenden:
<?php
if (0) {
// This should never run...
some_stuff_that_should_never_run();
}
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 .