2009-03-10 16 views
44

Mam potrzebę uwzględnienia */ w moim komentarzu JavaDoc. Problem polega na tym, że jest to również ta sama sekwencja zamykania komentarza. Jaki jest właściwy sposób cytowania/ucieczki od tego?Jak podać "* /" w JavaDocs

Przykład:

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

Kontynuacja: Wydaje się, mogę używać / za ukośnikiem. Jedynym minusem jest to, że nie jest to wszystko czytelne podczas przeglądania kodu bezpośrednio w edytorze tekstu.

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

Chciałbym dodać, że jest to jeden z doskonałych przykładów dobrego pytania. :) – Randolpho

+0

Podobają mi się sugestie bobince, aby dodać "gwiazdkę z ukośnikiem", być może w nawiasach po literalnym "* /". To jest następnie czytelne zarówno w kodzie i Javadoc. – ide

Odpowiedz

36

Użyj ukrywania HTML.

Więc w przykładzie:

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

/ ucieka jak znak "/".

Javadoc powinien wstawiać niezakłóconą sekwencję do wygenerowanego kodu HTML, który powinien być renderowany jako "* /" w przeglądarce.

Jeśli chcesz być bardzo ostrożnym, można uciec oba znaki: */ przekłada się */

Edit:

Kontynuacja: Wydaje się, mogę używać & # 47; dla ukośnika. Jedynym minusem jest , że nie jest to wszystko możliwe do odczytania, gdy wyświetla kod bezpośrednio.

Tak? Nie chodzi o to, żeby twój kod był czytelny, ale o to, aby twój kod mógł być czytelny dla kodu . Większość komentarzy Javadoc umieszcza skomplikowany kod HTML w celu wyjaśnienia. Hell, odpowiednik C# oferuje kompletną bibliotekę znaczników XML. Widziałem tam dość skomplikowane struktury, pozwól mi powiedzieć.

Edit 2: Jeśli ci to przeszkadza zbyt wiele, można osadzić komentarz inline non-javadoc, która wyjaśnia kodowanie:

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

Poszedłbym po B. –

+1

@ Tom Hawtin: Eh, pot ziemniaczany-ah-to. Każda działa. :) – Randolpho

+2

Czy to przeszkadza komukolwiek innemu oprócz mnie? Teraz wygląda dobrze w javadoc, ale jest nieczytelne, gdy patrzysz na kod źródłowy ... –

6

Używaj podmiot

*/ 

w twojej dokumentacja ta pojawi się jako "* /"

4

Innym sposobem, na który natknąłem się, po prostu dla kompletności: dodaj s ome znaczniki HTML, które nie zmieniają wyjścia między * i /.

/** 
    * *<b/>/ 
    */ 

porównaniu do rozwiązania HTML ucieczki, to wydaje się coś brzydkiego siekać, ale również daje prawo wynik w HTML.

+1

Niezupełnie; Twoja sugestia w obecnym stanie prawdopodobnie naruszyłaby specyfikacje html. Gdyby ktoś podążał tą drogą, sugerowałbym coś takiego: */, aby się upewnić, że znaczniki są zamknięte. – Randolpho

+0

Ach, zastanawiałem się nad tym, ale zostawiłem to tak, ponieważ jest to najkrótsza opcja i działało dobrze w IDEA (Ctrl-Q). Jeśli nie , czy nie wystarczyłoby * /lub * /? – Jonik

5

Proponuję również dodać komentarz wiersza gdzieś niedaleko mówiąc coś podobnego

// *&#47; is html for */ 
7
/** 
* Returns true if the specified string contains "*&#47;". 
*/ 

Jest to rozwiązanie „prawo”, ale przez wzgląd na czytelność jest pewnie bym pójść na:

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

Nikt nie wspomniał o {@literal}. Jest to kolejny sposób, aby przejść:

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

Niestety nie można uciec */ naraz. Z pewnymi wadami, to rozwiązuje również:

Jedynym minusem jest to, że nie jest aż tak czytelne podczas przeglądania kodu bezpośrednio w edytorze tekstowym.

Powiązane problemy