Комментарии: три способа документировать Java код


Предположим, вы работаете в ИТ-отделе крупной компании. Ваш босс инструктирует вас, что надо написать программу, состоящую из нескольких тысяч строк исходного кода. Через несколько недель вы закончите программу и запустите проект. Через несколько месяцев пользователи начинают замечать, что программа иногда падает. Они жалуются вашему боссу, а он, в свою очередь, приказывает вам: необходимо исправить это. Поискав в вашем архиве проектов, вы находите папку с текстовыми файлами - исходный код программы. К сожалению, вы обнаруживаете, что исходный код не имеет смысла – он просто-напросто вам непонятен. За прошедшее время вы работали в других проектах, и вы не можете вспомнить, почему вы написали код именно так. Расшифровка кода может занять несколько часов или даже дней, но боссу нужен результат еще вчера. Неизбежен немалый стресс. Как же не допустить этого?

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

В Java вы можете использовать функции комментариев: вставлять документацию в исходный код. Комментарий с разделителями – это текст, который имеет смысл для человека, но не для компилятора. При компиляции исходного кода компилятор Java игнорирует все комментарии; он не генерирует байт-код для них. Java поддерживает однострочные, многострочные, и комментарии Javadoc. Давайте посмотрим на примеры для каждого из них.

Однострочные комментарии

Однострочный комментарий охватывает одну строку. Он начинается с // и продолжается до конца текущей строки. Компилятор игнорирует все символы из // до конца этой линии. Следующий пример представляет однострочный комментарий:

System.out.println((98.6 - 32) * 5 / 9);
// Выводит значение в градусах Цельсия, эквивалентных 98,6 градусов по Фаренгейту.
Однострочный комментарий полезен для определения короткого значимого описания данной строки кода.

Многострочные комментарии

Многострочный комментарий охватывает несколько строк. Он начинается с /* и заканчивается */ . Все символы из /* через */ игнорируются компилятором. Следующий пример представляет многострочный комментарий:

/* Имеется сумма в $ 2,200.00, которая хранится на в банке. Годовая процентная ставка - 2%, пересчет идет каждый квартал (капитализация процентов). Каков будет баланс счета после 10 лет? Сложный процент вычисляется по формуле: 
A = P(1+r/n) nt, где 
A – это сумма накопленной после n лет, в том числе процентные 
P - от основной суммы (от первоначальной суммы вклада); 
r - годовая процентная ставка (в виде десятичной дроби ); 
n - число капитализаций процентов в год;
t = число лет, которое будет храниться вклад */

double principal = 2200;
double rate = 2 / 100.0;
double t = 10;
double n = 4;
System.out.println(principal * Math.pow(1 + rate / n, n * t));
Как вы можете видеть, многострочный комментарий полезен для документирования нескольких строк кода. Кроме этого, можно использовать несколько однострочных комментариев для другой цели, как я сделал ниже:

// Создание объекта ColorVSTextComponent, представляющий компонент
// который способен отображать строки текста в различных цветах и который
// обеспечивает вертикальную прокрутку. Ширина и высота
// отображаемого компонента 180 пикселей и 100 пикселей,
// соответственно. 
ColorVSTextComponent cvstc = new ColorVSTextComponent(180, 100);
Еще одно применение многострочных комментариев - комментирование блоков кода, которые не требуются в настоящий момент в программе, но, возможно понадобятся в будущем. Они остаются закомментированными, чтобы потом раскомментировать и использовать в любой момент. Следующий исходный код демонстрирует такой сценарий:

 /*
if (!version.startsWith("1.4") && !version.startsWith("1.5")) 
{
 System.out.println("JRE " + версия + " не поддерживается."); 
return; 
} 
*/
Нельзя делать многострочные комментарии в одну строку, потому что компилятор сообщит об ошибке. Например, компилятор выдает сообщение об ошибке, когда он сталкивается с

/* Это /* вложенный многострочный комментарий (в одной строке) */ это ошибка */
Комментарии Javadoc

Комментарий Javadoc - это специальный многострочный комментарий. Он начинается с /** и заканчивается */ . Все символы из /** через */ игнорируются компилятором. Следующий пример представляет комментарий Javadoc:

/**
* Точка входа в приложение
*
* @param передается массив значений в метод с помощью командной строки
*/
public static void main(String[] args) {
 // здесь находится код приложения, его логика
 }
 
Этот пример в комментарий Javadoc описывает метод main(). Находящееся между /** и */ является описанием метода и @param тег Javadoc ( @ -prefixed инструкции к javadoc инструмента).

Рассмотрим часто используемые теги Javadoc:

  • @author идентифицирует автора исходного кода.
  • @deprecated идентифицирует исходный код субъекта (например, метод), который больше не будет использоваться.
  • @param определяет один из параметров метода.
  • @see - ссылка.
  • @since идентифицирует версию программного обеспечения.
  • @return определяет тип значения, возвращаемого методом.
  • @throws – выбрасываемые методом исключения.


Хотя комментарии Javadoc игнорируются компилятором, но обрабатываются javadoc , который собирает их в HTML на основе документации. Например, следующая команда создает документацию для гипотетического Checkers класса:

javadoc Checkers 
Генерируемая документация включает в себя индексный файл ( index.html ), который представляет собой стартовую страницу. Например, на рисунке ниже вы можете видеть стартовую страницу из документации Java SE 8 update 45 библиотеки API, сгенерированную Javadoc.



Данная статья представляет собой перевод с английского. Автор исходного текста Джефф Фризен, переводчик Юрий Пахолков. Если вам необходим качественный перевод с английского языка (включая специфические тексты по ИТ-тематике), то вы можете обратиться к нам: пишите на электронную почту up777up@yandex.ru с темой "перевод". Мы с удовольствием и за очень небольшую сумму в отечественной или иностранной валюте вам поможем.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, java, комментарии, документация




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Поиск на сервере PHP
Урок 35. Коллекция ArrayList C#: часть первая
Инициализация классов в Java