2015-04-29 2 views
2

Можно ли каким-то образом, чтобы создать что-то вроде:повторное Javadoc предопределены текст

/** #define COMMON_NOTE_1="This note I want to re-use in several places" */ 
int varA; /** variable A (COMMON_NOTE_1) */ 
int varB; /** variable B (COMMON_NOTE_1) */ 

Некоторые suggested 3 years ago it may not been possible вы знаете, если это возможно в современном мире?

Если все еще не представляется возможным, были предложения по использованию препроцессора С. Любая идея, если препроцессор C может быть интегрирован с IntelliJ? Или я был бы счастлив также с скриптом python, автоматически выполняемым перед компиляцией. Я знаю, что Intelli J может быть настроен на запуск Ant перед компиляцией. Если бы готовое решение я тоже принял бы. Но я не хочу писать/модифицировать сам скрипт.

ответ

2

можно сделать следующим образом:

/** This note I want to re-use in several places */ 
static final int DUMMY; 
... 

/** variable A see {@link #DUMMY COMMON_NOTE}. */ 
int varA; 
/** variable B see {@link #DUMMY COMMON_NOTE}. */ 
int varB; /** variable B (COMMON_NOTE_1) */ 

Это создает ссылку в документации, что при нажатии приведет к общему документу. Тем не менее, он не покажет его. Также в зависимости от того, как долго общая заметка может занять больше письменности, чем дублировать заметку, но ее будет легче поддерживать.

+0

Я могу жить со ссылкой или сноской в ​​документации. Но я бы предпочел не испортить свой код из-за документации (первый Var был бы искусственным только потому, что javadoc). –

+0

Нет, это может быть просто первый var в вашем коде, который требует общей заметки. –

+0

Я отредактировал свой ответ, чтобы это было яснее. –

3

Так что я нашел один уродливый и ограниченный путь. Но самое лучшее до сих пор. Лот лучше, чем ранее предлагаемые переменные DUMMY. Главным уродством переменных DUMMY является то, что в вашем классе и в вашей документации будут переменные DUMMY. И даже когда вы проглотите беспорядочные переменные DUMMY в своем коде, вы не увидите «Примечание» напрямую, а только ссылку на него.

Лучшим подходом было бы использовать тег @value. Сначала создайте уродливый класс, такой как DocCommon, где все заметки будут скрыты. например .:

public class DocCommon { 
    public static final String note1 = "Note: This is common note"; 
    public static final String note2 = "Note: This is common note2"; 
} 

связать его из любого места, как:

/** A: {@value com.whoever.DocCommon#note1} B*/ 

Он будет затем показывает в документации непосредственно, как это:

A: "Note: This is common note" B 

Недостаток заключается в том, что он будет показывать с кавычки " ". Другим недостатком является то, что он не примет никаких HTML-тегов. Например. когда вы ставите <br>, он будет вызывать ошибку при компиляции javadoc. Таким образом, это не будет работать:

public static final String note1 = "Note: <br> This is common note"; 

У кого-нибудь есть лучшее предложение? Я заметил, что могут быть другие инструменты документации, чем Javadoc. Любой намек на конкретную поддержку многострочных #defines?

Смежные вопросы