2009-03-10 5 views
44

Ich muss */ in meinem JavaDoc-Kommentar enthalten. Das Problem ist, dass dies auch die gleiche Sequenz zum Schließen eines Kommentars ist. Was ist der richtige Weg, dies zu zitieren/zu entkommen?Wie zitiere ich "* /" in JavaDocs

Beispiel:

/** 
* Returns true if the specified string contains "*/". 
*/ 
public boolean containsSpecialSequence(String str) 

Follow-up: Es scheint, ich / für den Schrägstrich verwenden kann. Der einzige Nachteil ist, dass dies nicht lesbar ist, wenn der Code direkt in einem Texteditor angezeigt wird.

/** 
* Returns true if the specified string contains "*/". 
*/ 
+0

Ich möchte nur hinzufügen, dass dies eines der perfekten Beispiele für eine gute Frage ist. :) – Randolpho

+0

Ich mag den Vorschlag von Bobince, "Sternchen gefolgt von einem Schrägstrich" einzubeziehen, vielleicht in Klammern nach dem Literal "* /". Es ist dann sowohl im Code als auch in Javadoc lesbar. – ide

Antwort

36

Verwenden Sie HTML-Escaping.

So in Ihrem Beispiel:

/** 
* Returns true if the specified string contains "*/". 
*/ 
public boolean containsSpecialSequence(String str) 

/ entkommt als Zeichen "/".

Javadoc sollte die Escape-Sequenz unbelästigt in den erzeugten HTML-Code einfügen, der in Ihrem Browser als "* /" dargestellt werden sollte.

Wenn Sie sehr vorsichtig sein wollen, könnten Sie beide Charaktere entkommen: */ übersetzt */

Edit:

Follow-up: Es scheint, ich kann & # 47; für den Schrägstrich. Der einzige Nachteil ist , dass dies nicht alles lesbar ist, wenn den Code direkt anzeigen.

Also? Der Punkt ist nicht für Ihren Code lesbar sein, der Punkt ist für Ihren Code Dokumentation lesbar sein. Die meisten Javadoc-Kommentare enthalten komplexes HTML zur Erläuterung. Hell, C# 's Äquivalent bietet eine vollständige XML-Tag-Bibliothek. Ich habe einige ziemlich komplizierte Strukturen darin gesehen, lass mich dir sagen.

Edit 2: Wenn Sie zu viel stört, können Sie eine nicht-javadoc Inline-Kommentar einbetten, die die Kodierung erklärt:

/** 
* Returns true if the specified string contains "*/". 
*/ 
// returns true if the specified string contains "*/" 
public boolean containsSpecialSequence(String str) 
+2

hätte ich für die B gehen. –

+1

@Tom Hawtin: Eh, Kartoffeltopf-ah-zu. Entweder funktioniert es. :) – Randolpho

+2

Stört das jemanden außer mir? Nun sieht es im Javadoc gut aus, aber es ist unlesbar, wenn man nur den Quellcode betrachtet ... –

6

Verwenden Sie die Einheit

*/ 

In Ihrem Dokumentation wird es als ein "* /" angezeigt

4

Eine andere Möglichkeit, über die ich stolperte, nur der Vollständigkeit halber: fügen s hinzu ome HTML Markup, das die Ausgabe zwischen * und/nicht verändert.

Verglichen mit der HTML-Escape-Lösung scheint dies ein hässlicher Hack zu sein, liefert aber auch das richtige Ergebnis in der HTML-Ausgabe.

+1

Nicht ganz; Ihr Vorschlag, wie er derzeit aussieht, würde wahrscheinlich HTML-Doctypes verletzen. Wenn jemand diese Route gehen würde, würde ich etwas vorschlagen wie: */ um sicherzustellen, dass die Tags geschlossen sind. – Randolpho

+0

Ah, ich habe mich darüber gewundert, aber es so gelassen, weil es die kürzeste Option ist und in IDEA (Ctrl-Q) funktionierte. Wenn nicht , würde nicht * /oder * /suffice? – Jonik

5

Ich würde vorschlagen, dass Sie auch eine Reihe Kommentar hinzufügen irgendwo in der Nähe etwas sagen wie

// */ is html for */ 
7
/** 
* Returns true if the specified string contains "*/". 
*/ 

Dies ist die ‚richtige‘ Lösung, aber aus Gründen der Lesbarkeit den ich wahrscheinlich gehen würde:

/** 
* Returns true if the string contains an asterisk followed by slash. 
*/ 
7

Niemand erwähnt {@literal}. Dies ist ein weiterer Weg zu gehen:

/** 
* Returns true if the specified string contains "*{@literal /}". 
*/ 

Leider kann man nicht */ zu einem Zeitpunkt, entkommen. Bei einigen Nachteilen, korrigiert diese Fehler auch:

Der einzige Nachteil ist, dass dies nicht alles ist, was lesbar ist, wenn Sie den Code direkt in einem Texteditor anzeigen.