Javadoc @author tag хорошие практики
мне интересно о лучших практиках при создании Javadocs. У меня есть проект со многими файлами. Код был создан многими разработчиками. Каждый файл имеет аннотацию @author
, поэтому очевидно, кто создал определенный класс.
но когда какой-нибудь другой разработчик добавляет новый код в файл, изменяет его, и т. д., как он должен сообщить остальной части команды, что он создал какую-то новую функцию или изменил существующий код? Другими словами, как мы должны " держать Javadocs совместим с реальностью"? ;)
- добавьте его имя к существующему
@author
тег? Тогда легче определить, кого спросить в случае каких-либо сомнений. - добавить
@author
тег для каждого нового метода внутреннего класса и т. д.?
конечно, поскольку мы используем SVN, легко исследовать, кто что сделал, но для сохранения ясности этот материал Javadoc также должен быть принят во внимание.
каков наилучший способ использовать эти @author
бирки?
4 ответов
Я бы сказал, что для большинства целей @author
- это нежелательный шум. Пользователь вашего API не должен - и, вероятно, не-заботиться или хочет знать, кто написал какие части.
и, как вы уже заявили, SVN уже содержит эту информацию гораздо более авторитетным образом, чем может код. Поэтому, если бы я был одним из команды, я бы всегда предпочел журнал SVN и игнорировал @author
. Держу пари, что код выйдет из синхронизации с реальностью, какую бы политику вы ни приняли. Следующий принцип "не повторяйся": зачем хранить эту информацию в двух местах?
Если, однако, есть какая-то бюрократическая или политическая причина, по которой эта информация должна быть включена в код, рассматривали ли вы автоматическое обновление @author
тег в коде при регистрации? Ты мог бы!--11-->наверное достигните этого с крюком SVN. Вы можете, например, перечислить всех разработчиков, которые изменили данный файл в том порядке, в котором они его изменили; или кто изменил его больше всего; или что угодно. Или, если @author
является обязательным в (исходном) коде, который вы выпускаете во внешний мир, вы можете рассмотреть возможность добавления @author
автоматически как часть сборки выпуска (я подозреваю, что вы могли бы получить эту информацию из SVN каким-то образом).
что касается добавления более одного уровня класса @author
tag (или другой комментарий), Я бы сказал, что вы будете накапливать много бесполезного шума. (Опять же, у вас есть SVN.)
по моему опыту гораздо полезнее определить историческое изменение (скажем, измените на строку кода или метод), затем, чтобы выяснить, к какому набору изменений это относится (и какой билет трека). Затем у вас есть полный контекст для изменения: у вас есть билет, набор изменений, вы можете найти другие наборы изменений в том же билете или примерно в то же время вы можете найти связанные билеты, и вы можете увидеть все изменения, которые сформировали эту единицу работы. Вы никогда не получите это из аннотации или комментариев в коде.
вы можете рассмотреть почему вам нужны теги автора в источнике. Фонд Apache этого не делает, и я согласен.
http://www.theinquirer.net/inquirer/news/1037207/apache-enforces-the-removal-of-author-tags
насколько я понимаю, это культовый способ работы с грузом, когда источники были напечатаны на бумаге. С современными системами управления версиями эту информацию и многое другое можно найти в истории в любом случае.
Вы можете иметь более одного @author
тег. Если вы внесете большие изменения в класс, просто добавьте новый @author
тег с вашим собственным именем в нем. Нет необходимости отмечать изменения, которые вы сделали, или помещать свое имя вокруг изменений, поскольку история изменений должна быть в состоянии отобразить это четко.
в действительно больших и долгосрочных проектах с большим количеством разработчиков полезно знать, что ho отвечает за данный код, который может предоставить вам дополнительную информацию и т. д. В этом случае было бы удобно иметь такую информацию в файле, используя тег @author. Не отмечать, кто создал файл или сделал некоторые важные вклады, но кто является контактным лицом для этого кода. Это могут быть очень разные люди, поскольку оригинальный автор может быть уже на другом проекте или покинул компанию лет назад.
Я думаю, что на огромном проекте этот подход может быть удобен, однако есть оговорка. Сохранение информации об авторе каждого файла очень сложно, так как существует огромное количество файлов и рано или поздно потерпит неудачу. Все больше и больше файлов будут иметь устаревшую информацию, и разработчики больше не будут доверять этому @author как источнику информации и просто проигнорируют его.
решение, которое может работать, не должно содержать @author в каждом отдельном файле, а только в модуле (пакеты высокого уровня). Javadoc имеет функцию, где вы можете документировать не только файлы, но и целые пакеты (см. этот вопрос для более подробной информации).
Это, однако, особый случай, и пока ваш проект не такой большой или старый, я рекомендую использовать информацию об авторе.