Перейти к основному содержимому

Пример многострочного кода в комментарии Javadoc

· 6 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим различные способы форматирования комментариев Javadoc. Мы сосредоточимся на анализе форматирования фрагментов кода , написанных в виде комментариев к документации.

2. Введение

Javadoc — это инструмент для создания документации для класса Java. Он обрабатывает комментарии к документации, указанные в исходном файле Java, и генерирует соответствующую HTML-страницу .

Пожалуйста, обратитесь к нашей статье, чтобы узнать больше о документации Javadoc .

3. Фрагменты кода как комментарии Javadoc

Мы можем включать фрагменты кода как часть комментариев к документации для класса Java. Мы хотим просмотреть фрагменты кода с правильными отступами и символами на сгенерированной HTML-странице.

Давайте попробуем добавить фрагмент кода Java как часть наших комментариев:

/**
* This is an example to show default behavior of code snippet formatting in Javadocs
*
* public class Application(){
*
* }
*
*/

Соответствующая HTML-страница:

./b2790251468f81a47dc2130935d97f82.png

По умолчанию разрывы строк и пробелы в комментариях Javadoc не сохраняются . Это приводит к неправильному отступу, особенно в случае многострочных фрагментов кода.

Давайте найдем способ поддерживать правильные отступы в наших комментариях.

3.1. Использование тега <pre>

HTML предоставляет тег <pre> для обозначения предварительно отформатированного текста. Он сохраняет пробелы и разрывы строк заключенного текста , тем самым сохраняя необходимый отступ для фрагментов кода:

/**
* This is an example to show usage of HTML pre tag while code snippet formatting in Javadocs
*
* <pre>
* public class Application(){
* List<Integer> nums = new ArrayList<>();
* }
*
* </pre>
*/

Соответствующая HTML-страница:

./f5e59be5cc39b6f219c873b3b321d5f8.png

Здесь мы успешно сохранили пробелы и разрывы строк, необходимые для наших фрагментов кода. Однако теперь мы столкнулись с другой проблемой: мы не можем видеть обобщения , введенные как часть фрагмента кода.

Поскольку комментарии преобразуются в HTML-страницу, части фрагментов кода могут быть неверно истолкованы как HTML-теги , например <Integer> в приведенном выше примере.

Давайте рассмотрим способы сохранения правильного форматирования символов HTML, встроенных в наши комментарии.

3.2. Использование объектов символов HTML

Если наш фрагмент кода содержит зарезервированные символы HTML, такие как ' < ', ' > ' или ' & ', они могут быть интерпретированы как символы HTML при анализе комментариев. Чтобы сохранить эти символы, мы можем использовать объекты Character вместо необходимых символов.

Например, мы можем использовать < для обозначения символа ' < ':

/**
* This is an example to show usage of HTML character entities while code snippet formatting in Javadocs
*
* <pre>
* public class Application(){
* List<Integer> nums = new ArrayList<>();
* }
*
* </pre>
*/

Соответствующая HTML-страница:

./87203066520f77a798bd46e6cdaf4e85.png

3.3. Использование тега @code

J avadoc предоставляет тег @code , который обрабатывает комментарии, заключенные в скобки, как исходный код, а не символы HTML . Это позволяет нам использовать зарезервированные символы HTML напрямую, не экранируя их с помощью сущностей символов :

/**
* This is an example to show usage of javadoc code tag while code snippet formatting in Javadocs
*
* <pre>
*
* public class Application(){
* {@code List<Integer> nums = new ArrayList<>(); }
* }
*
* </pre>
*/

Соответствующая HTML-страница:

./fa1c902a04b88394e4ce1c2c3c7c738e.png

Обратите внимание, что тег @code не решает проблемы с отступами в наших комментариях. Для этого нам нужно дополнительно использовать тег <pre> .

Как мы видели выше, Javadoc идентифицирует теги, используя символы ' @ ' . Если у нас есть ' @ ' как часть наших фрагментов кода, это будет неверно истолковано Javadoc, что приведет к неправильному отображению комментариев.

Давайте посмотрим на это на примере:

/**
* This is an example to show issue faced while using annotations in Javadocs
*
* <pre>
*
* public class Application(){
* @Getter
* {@code List<Integer> nums = new ArrayList<>(); }
* }
*
* </pre>
*/

Соответствующая HTML-страница:

./726ecc055c2e59add8498c55d21cb11c.png

Как мы видим, Javadoc обрабатывает @Getter как тег, и комментарии отображаются неправильно. Мы можем встроить аннотации (или код с использованием символов @ ) в тег @code , предоставленный Javadoc:

/**
* This is an example to show usage of javadoc code tag for handling '@' character
*
* <pre>
*
* public class Application(){
* {@code @Getter}
* {@code List<Integer> nums = new ArrayList<>(); }
* }
*
* </pre>
*/

Соответствующая HTML-страница:

./56579175acec791b3b693820b92e17a2.png

3.4. Использование тега @literal

Аналогичного поведения `` можно добиться и с помощью тега @literal . Единственная разница между тегом @code и тегом @literal заключается в том, что тег @code форматирует заключенный в нем текст кодовым шрифтом :

/**
* This is an example to show difference in javadoc literal and code tag
*
* <p>
*
* {@literal @Getter}
* {@literal List<Integer> nums = new ArrayList<>(); }
*
* <br />
* {@code @Getter}
* {@code List<Integer> nums = new ArrayList<>(); }
* </p>
*/

Соответствующая HTML-страница:

./6061ccac93de9937c3f7d13d3f51fe33.png

Таким образом, мы добились корректного отображения фрагментов кода на HTML-странице.

3.5. Форматирование фрагментов кода jQuery

Здесь мы взяли пример фрагмента кода Java. Те же функции применимы и для любого другого языка.

Давайте включим простой фрагмент кода jQuery в качестве комментария к документации:

/**
* This is an example to illustrate a basic jQuery code snippet embedded in documentation comments
* <pre>
* {@code <script>}
* $document.ready(function(){
* console.log("Hello World!);
* })
* {@code </script>}
* </pre>
*/

Соответствующая HTML-страница:

./f45c5c4170533a82dc721aa317fbcf64.png

3.6. Форматирование фрагментов HTML-кода

До сих пор мы понимали, что, с одной стороны, Javadoc позволяет нам использовать теги HTML для форматирования наших комментариев, а с другой стороны, это также может привести к проблемам, когда мы хотим использовать символы HTML без разметки.

Например, мы можем захотеть вставить фрагменты HTML-кода в наши комментарии.

Давайте вставим фрагмент HTML-кода как часть нашего комментария к документации и посмотрим, как он себя ведет:

/**
* This is an example to illustrate an HTML code snippet embedded in documentation comments
* <pre>
* <html>
* <body>
* <h1>Hello World!</h1>
* </body>
* </html>
* </pre>
*
*/

Соответствующая HTML-страница:

./c01409549deb6a4cf8887662d7daedeb.png

Здесь мы видим, что фрагмент кода, встроенный в комментарии, был преобразован в HTML-страницу с разметкой HTML . Мы можем решить проблему с помощью тега @code , как обсуждалось выше:

/**
* This is an example to illustrate an HTML code snippet embedded in documentation comments
* <pre>{@code
* <html>
* <body>
* <h1>Hello World!</h1>
* </body>
* </html>}
* </pre>
*
*/

Соответствующая HTML-страница:

./2384b8cd30b8d82c9dc468d8ef663e06.png

4. Вывод

Мы рассмотрели различные способы форматирования комментариев Javadoc. Мы можем выбрать параметры форматирования в соответствии с нашими требованиями для создания хорошо отформатированной документации.

Мы можем использовать HTML-теги для улучшения форматирования комментариев Javadoc, а также избегать их, когда это соответствует нашим требованиям.