Малышкин Фёдор 11 октября 2007 Документирование исходных текстов
Основание для ведения документации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
Основание  для ведения документации Возобновление работы над проектом после продолжительного перерыва  Переход проекта от одного человека (группы) к другому человеку (группе) Опубликование проекта для Open Source сообщества Совместная работа большой группы людей над одним проектом
Основание для ведения документации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
Требования к документации Не документировать очевидные вещи (setter'ы и getter'ы, циклы по массивам и листам, вывод логов и прочее) /** * Проверка: редактируема ли даннная ячейка. * * <p>В случае если данная ячаейка редактируема - возвращается true</p> * * <p>В случае если данная ячаейка не редактируема - возвращается false</p> * * @param column номер колонки для проверки * @return результат проверки **/ public boolean isCellEditable(int column) { return column % 2 == 0 ? true : false; }
Требования к документации Поддерживать документацию в актуальном состоянии /** * Произвести парсинг истории операций над невстроенной БД. *  *  *  @throws  XMLConfigurationParsingException */ public   void  parseHistoryNotEmbeddedDB()  throws  XMLConfigurationParsingException { return ; /* * InputStream is = * Thread.currentThread().GetContextClassLoader(). getResourceAsStream(&quot;ru/magnetosoft/magnet/em/cfg/db-configuration-not-embedded.xml&quot;); * String configXml = readStringFromStream(is); * XmlConfigurationParserImpl parser = new * XmlConfigurationParserImpl(configXml); IEmConfiguration res = * parser.parse(); assertNotNull(res); * assertFalse(res.getOperationHistoryStorageConfiguration().isEmbeddedStorage()); * assertEquals(&quot;HSQLDB&quot;, * res.getOperationHistoryStorageConfiguration().getStorageDBType()); */ }
Требования к документации Описывать входящие параметры, если нужно /** * Создание нового экземпляра ядра. *  *  *  @param  contextName *  @param  objectRelationManager *  @param  xmlObjectPersister *  @param  ohm *  @param  snm *  @param  initializationLatch *  @return */ public   static  EmEngine newInstance(String contextName, IXmlObjectRelationManager objectRelationManager, IXmlObjectPersister xmlObjectPersister, OperationHistoryManager ohm, ISearchNotificationManager snm, CountDownLatch initializationLatch) { ... ... }
Основание для ведения документации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
JavaDoc'и: Обзор Это просто текст обрамлённый особыми комментариями. Они могут описывать классы, методы и переменные класса.  Например: /**  Текст  **/ Он может включать в себя HTML тэги и специальные javadoc тэги, которые позволяют включать дополнительную информацию и ссылки. /** Вставка объектов в очередь. <p>Вставка объектов в конец очереди, но только если нет таких же экземпляров<p>. @since 0.2 @author Malyshkin Fedor ( [email_address] ) **/
JavaDoc'и: Обзор Структура каждого javadoc коментария такова: Первая строчка, которая попадает в краткое описание класса (отделяется точкой и пустой строкой). Основной текст, который вместе с HTML тэгами кописруется в основную документацию. Входящие параметры (если есть) Выбрасываемые исключения (если есть) Возвращаемое значение (если есть) Служебные Javadoc тэги
JavaDoc'и: Обзор
Основание для ведения документации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
JavaDoc'и: Тэги @see – ссылка на дополнительные классы или пакеты (все ссылки оформляются в виде: «packageName.className#methodName(argument1, argument2,...)», где пакет указывается лишь в случае если ссылаемся на класс в другом пакете, а аргументы (т.е. типы аргументов) – лишь в случае если есть метод с тем же именем). Т.е. можно написать так: @see java.io.RandomAccessFile#RandomAccessFile(File, String) а можно и так: @see CreationManager
JavaDoc'и: Тэги @author – автор кода @author Mary Wollstonecraft @author Jack Kent, Peggy Parish, Crockett Johnson @version – версия продукта (если нужно) @version 493.0.1beta @since – с какой версии появлось в продукте @since 493.0.1beta @param – (с именем параметра) описание входящего параметра @param column номер колонки для проверки @param row номер ряда для проверки @return – описание возвращаемого значения @throws – (с типом исключения) описание исключения @throws XmlMagnetException @throws EntityManagerException
JavaDoc'и: Тэги @link – позволяет сделать ссылку на другой класс, метод или пакет. Обратите внимание на фигурные скобки. {@link #getInstance(InputStream)}  {@link #getInstance(String)} {@link java.io.InputStream(String)}
JavaDoc'и: Обзор Есть возможность применять комментарии для пакетов. Для этого необходимо поместить файл package.html в пакет с исходными текстами. Данный файл должен быть обычным HTML файлом с тэгом <BODY>. Первая строчка файла до точки идёт в краткое описание пакета, а полное описание идёт вниз – под список всех классов и исключений.  Этот функционал позволяет описать что-то, что невозможно описать с помощью конкретных классов.
Основание для ведения документации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
JavaDoc'и: Примеры /** * Представитель модуля EntityManger на клиентской стороне. * * <p> * Данный класс представляет средства доступ к возможностям модуля * EntityManager, минуя прямые вызовы веб-сервисов. * </p> * <p> * Он самостоятельно преобразовывает ваши Java Bean'ы в XML и производит * обратную операцию, при получении ответа от модуля. * </p> * <p> * Для получения экземпляра данного класса предназначены статические методы * {@link #getInstance(InputStream)} и {@link #getInstance(String)} * </p> * * @created 09.11.2006 * @version $Revision 738 $ * @author MalyshkinF * @since 0.2.2 */ public class EntityManagerInvoker {
JavaDoc'и: Примеры /** * Произвести запись нового объекта. *  * Произвести запись нового объекта. Тип для сохранения может быть * подклассом List (для реализации возможности работы с несколькими * объектами) или единичным объектом. В случае если произошла какая-либо * ошибка - выбрасывается исключение. В данном случае с базой не происходит * никаких изменений и ни один объект не был затрагивается предполагаемой * операцией. Конкретный тип ошибки можно определить проверкой конкретного * возвращённого исключения. * * @param object *  сохраняемый объект/объекты. * @return сохраненный объект/объекты * @throws XmlMagnetException ошибка в процессе парсинга XML * @throws EntityManagerException ошибка связанная с другой работой клиента */ public Object insert(Object object) throws XmlMagnetException, EntityManagerException {
Основание для ведения документации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
Maven 2 & JavaDoc'и Поддержка генерации javadoc Настраиваемые в pom.xml параметры для генерации javadoc Автоматическая генерация и закачка в репозитарий javadoc'ов при создании релиза ...
Maven 2 & JavaDoc'и Для генерации javadoc'ов в существует plugin javadoc: $malyshkiknf> mvn javadoc:javadoc Для автоматической генерации при каждой сборке необходимо добавить в  корневой  тэг такой XML: <reporting> ... <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> </plugin> ... </plugins> ... </reporting>
Maven 2 & JavaDoc'и Возможно объединить javadoc'и от нескольких дочерних проектов. Для этого нужно откорректировать корневой pom.xml. <reporting> ... <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> ... <aggregate>true</aggregate> ... </configuration> </plugin> ... </plugins> ... </reporting>
Maven 2 & JavaDoc'и Можно группировать пакеты по сходному назначению или использованию в группы. <groups> <group> <title>Clients Part</title>  <packages>ru.magnetosoft.magnet.em.client: ru.magnetosoft.magnet.em.client.cfg</packages> </group> <group> <title>Common Part</title> <packages>ru.magnetosoft.magnet.em.annotations: ru.magnetosoft.magnet.em.metadata: ru.magnetosoft.magnet.em.xml: ru.magnetosoft.magnet.em.xml.parts: ru.magnetosoft.magnet.em.xml.parts.v2: </packages> </group> </groups>
Основание для ведения документации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
NetBeans & JavaDoc'и Просмотр JavaDoc'ов в отдельном окне и в контекстом  Помощь в генерации JavaDoc'ов Возможность подключения JavaDoc'ов к используемым библиотекам P.S.: Примеры будут показываться на NetBeans 6
NetBeans & JavaDoc'и Для активации поддержки JavaDoc'ов необходимо кое-что включить в NetBeans
NetBeans & JavaDoc'и Отдельное окно с информацией о JavaDoc
NetBeans & JavaDoc'и Контекстно меню. Как обычно при нажатии Ctrl+Space...
NetBeans & JavaDoc'и Помощь в генераци JavaDoc.  Наводим курсор на определение класса и ждём... Нажимаем на лампочку .... Вуаля...
Основание для ведения документации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
Ресурсы для JavaDoc'ов HTTP Server на mg-sv01 и шара \\mg-sv01\javadocs\
Основание для ведения документации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
TODO Подобно многим другим средам разработки NetBeans позволяет оставлять особые коментарии в исходных текстах, которые могут быть собраны и выведены на экран. Это могут быть личные заметки о необходимости дополнительной проверки кода, переработки в дальнейшем и прочие записи.

Документирование исходных текстов (javadoc)

  • 1.
    Малышкин Фёдор 11октября 2007 Документирование исходных текстов
  • 2.
    Основание для ведениядокументации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
  • 3.
    Основание дляведения документации Возобновление работы над проектом после продолжительного перерыва Переход проекта от одного человека (группы) к другому человеку (группе) Опубликование проекта для Open Source сообщества Совместная работа большой группы людей над одним проектом
  • 4.
    Основание для ведениядокументации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
  • 5.
    Требования к документацииНе документировать очевидные вещи (setter'ы и getter'ы, циклы по массивам и листам, вывод логов и прочее) /** * Проверка: редактируема ли даннная ячейка. * * <p>В случае если данная ячаейка редактируема - возвращается true</p> * * <p>В случае если данная ячаейка не редактируема - возвращается false</p> * * @param column номер колонки для проверки * @return результат проверки **/ public boolean isCellEditable(int column) { return column % 2 == 0 ? true : false; }
  • 6.
    Требования к документацииПоддерживать документацию в актуальном состоянии /** * Произвести парсинг истории операций над невстроенной БД. * * * @throws XMLConfigurationParsingException */ public void parseHistoryNotEmbeddedDB() throws XMLConfigurationParsingException { return ; /* * InputStream is = * Thread.currentThread().GetContextClassLoader(). getResourceAsStream(&quot;ru/magnetosoft/magnet/em/cfg/db-configuration-not-embedded.xml&quot;); * String configXml = readStringFromStream(is); * XmlConfigurationParserImpl parser = new * XmlConfigurationParserImpl(configXml); IEmConfiguration res = * parser.parse(); assertNotNull(res); * assertFalse(res.getOperationHistoryStorageConfiguration().isEmbeddedStorage()); * assertEquals(&quot;HSQLDB&quot;, * res.getOperationHistoryStorageConfiguration().getStorageDBType()); */ }
  • 7.
    Требования к документацииОписывать входящие параметры, если нужно /** * Создание нового экземпляра ядра. * * * @param contextName * @param objectRelationManager * @param xmlObjectPersister * @param ohm * @param snm * @param initializationLatch * @return */ public static EmEngine newInstance(String contextName, IXmlObjectRelationManager objectRelationManager, IXmlObjectPersister xmlObjectPersister, OperationHistoryManager ohm, ISearchNotificationManager snm, CountDownLatch initializationLatch) { ... ... }
  • 8.
    Основание для ведениядокументации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
  • 9.
    JavaDoc'и: Обзор Этопросто текст обрамлённый особыми комментариями. Они могут описывать классы, методы и переменные класса. Например: /** Текст **/ Он может включать в себя HTML тэги и специальные javadoc тэги, которые позволяют включать дополнительную информацию и ссылки. /** Вставка объектов в очередь. <p>Вставка объектов в конец очереди, но только если нет таких же экземпляров<p>. @since 0.2 @author Malyshkin Fedor ( [email_address] ) **/
  • 10.
    JavaDoc'и: Обзор Структуракаждого javadoc коментария такова: Первая строчка, которая попадает в краткое описание класса (отделяется точкой и пустой строкой). Основной текст, который вместе с HTML тэгами кописруется в основную документацию. Входящие параметры (если есть) Выбрасываемые исключения (если есть) Возвращаемое значение (если есть) Служебные Javadoc тэги
  • 11.
  • 12.
    Основание для ведениядокументации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
  • 13.
    JavaDoc'и: Тэги @see– ссылка на дополнительные классы или пакеты (все ссылки оформляются в виде: «packageName.className#methodName(argument1, argument2,...)», где пакет указывается лишь в случае если ссылаемся на класс в другом пакете, а аргументы (т.е. типы аргументов) – лишь в случае если есть метод с тем же именем). Т.е. можно написать так: @see java.io.RandomAccessFile#RandomAccessFile(File, String) а можно и так: @see CreationManager
  • 14.
    JavaDoc'и: Тэги @author– автор кода @author Mary Wollstonecraft @author Jack Kent, Peggy Parish, Crockett Johnson @version – версия продукта (если нужно) @version 493.0.1beta @since – с какой версии появлось в продукте @since 493.0.1beta @param – (с именем параметра) описание входящего параметра @param column номер колонки для проверки @param row номер ряда для проверки @return – описание возвращаемого значения @throws – (с типом исключения) описание исключения @throws XmlMagnetException @throws EntityManagerException
  • 15.
    JavaDoc'и: Тэги @link– позволяет сделать ссылку на другой класс, метод или пакет. Обратите внимание на фигурные скобки. {@link #getInstance(InputStream)} {@link #getInstance(String)} {@link java.io.InputStream(String)}
  • 16.
    JavaDoc'и: Обзор Естьвозможность применять комментарии для пакетов. Для этого необходимо поместить файл package.html в пакет с исходными текстами. Данный файл должен быть обычным HTML файлом с тэгом <BODY>. Первая строчка файла до точки идёт в краткое описание пакета, а полное описание идёт вниз – под список всех классов и исключений. Этот функционал позволяет описать что-то, что невозможно описать с помощью конкретных классов.
  • 17.
    Основание для ведениядокументации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
  • 18.
    JavaDoc'и: Примеры /*** Представитель модуля EntityManger на клиентской стороне. * * <p> * Данный класс представляет средства доступ к возможностям модуля * EntityManager, минуя прямые вызовы веб-сервисов. * </p> * <p> * Он самостоятельно преобразовывает ваши Java Bean'ы в XML и производит * обратную операцию, при получении ответа от модуля. * </p> * <p> * Для получения экземпляра данного класса предназначены статические методы * {@link #getInstance(InputStream)} и {@link #getInstance(String)} * </p> * * @created 09.11.2006 * @version $Revision 738 $ * @author MalyshkinF * @since 0.2.2 */ public class EntityManagerInvoker {
  • 19.
    JavaDoc'и: Примеры /*** Произвести запись нового объекта. * * Произвести запись нового объекта. Тип для сохранения может быть * подклассом List (для реализации возможности работы с несколькими * объектами) или единичным объектом. В случае если произошла какая-либо * ошибка - выбрасывается исключение. В данном случае с базой не происходит * никаких изменений и ни один объект не был затрагивается предполагаемой * операцией. Конкретный тип ошибки можно определить проверкой конкретного * возвращённого исключения. * * @param object * сохраняемый объект/объекты. * @return сохраненный объект/объекты * @throws XmlMagnetException ошибка в процессе парсинга XML * @throws EntityManagerException ошибка связанная с другой работой клиента */ public Object insert(Object object) throws XmlMagnetException, EntityManagerException {
  • 20.
    Основание для ведениядокументации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
  • 21.
    Maven 2 &JavaDoc'и Поддержка генерации javadoc Настраиваемые в pom.xml параметры для генерации javadoc Автоматическая генерация и закачка в репозитарий javadoc'ов при создании релиза ...
  • 22.
    Maven 2 &JavaDoc'и Для генерации javadoc'ов в существует plugin javadoc: $malyshkiknf> mvn javadoc:javadoc Для автоматической генерации при каждой сборке необходимо добавить в корневой тэг такой XML: <reporting> ... <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> </plugin> ... </plugins> ... </reporting>
  • 23.
    Maven 2 &JavaDoc'и Возможно объединить javadoc'и от нескольких дочерних проектов. Для этого нужно откорректировать корневой pom.xml. <reporting> ... <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> ... <aggregate>true</aggregate> ... </configuration> </plugin> ... </plugins> ... </reporting>
  • 24.
    Maven 2 &JavaDoc'и Можно группировать пакеты по сходному назначению или использованию в группы. <groups> <group> <title>Clients Part</title> <packages>ru.magnetosoft.magnet.em.client: ru.magnetosoft.magnet.em.client.cfg</packages> </group> <group> <title>Common Part</title> <packages>ru.magnetosoft.magnet.em.annotations: ru.magnetosoft.magnet.em.metadata: ru.magnetosoft.magnet.em.xml: ru.magnetosoft.magnet.em.xml.parts: ru.magnetosoft.magnet.em.xml.parts.v2: </packages> </group> </groups>
  • 25.
    Основание для ведениядокументации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
  • 26.
    NetBeans & JavaDoc'иПросмотр JavaDoc'ов в отдельном окне и в контекстом Помощь в генерации JavaDoc'ов Возможность подключения JavaDoc'ов к используемым библиотекам P.S.: Примеры будут показываться на NetBeans 6
  • 27.
    NetBeans & JavaDoc'иДля активации поддержки JavaDoc'ов необходимо кое-что включить в NetBeans
  • 28.
    NetBeans & JavaDoc'иОтдельное окно с информацией о JavaDoc
  • 29.
    NetBeans & JavaDoc'иКонтекстно меню. Как обычно при нажатии Ctrl+Space...
  • 30.
    NetBeans & JavaDoc'иПомощь в генераци JavaDoc. Наводим курсор на определение класса и ждём... Нажимаем на лампочку .... Вуаля...
  • 31.
    Основание для ведениядокументации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
  • 32.
    Ресурсы для JavaDoc'овHTTP Server на mg-sv01 и шара \\mg-sv01\javadocs\
  • 33.
    Основание для ведениядокументации Требования к документации JavaDoc'и Обзор Тэги Примеры Maven2 & JavaDoc'и NetBeans & JavaDoc'и Ресурсы для JavaDoc'ов в сети фирмы Дополнительная документация TODO Оглавление
  • 34.
    TODO Подобно многимдругим средам разработки NetBeans позволяет оставлять особые коментарии в исходных текстах, которые могут быть собраны и выведены на экран. Это могут быть личные заметки о необходимости дополнительной проверки кода, переработки в дальнейшем и прочие записи.