Я бы хотел опубликовать это как общий вопрос программирования. Причина, по которой я не делаю этого, заключается в том, что разные системы документирования обрабатывают теги по-разному и поэтому налагают свои собственные правила на то, что является «правильным» или «неправильным» для определенного языка.phpDocumentor/ApiGen @author tag location
Теперь речь идет о PHP. На данный момент нет стандартной системы документации. Существует phpDocumentor, который, будучи устаревшим, как проект, создал базу. Текущие продукты, такие как ApiGen, похоже, прилагают усилия для поддержки своего синтаксиса.
Один тэг Я не совсем знаю, куда положить - тег @author. Я чувствую, что размещаю его с блоком doc уровня файла. Вместе с @copyright, @license, @package и @link. Вместо внутреннего блока doc класса. Для некоторого контекста: мои файлы PHP содержат только одно объявление класса.
Однако я не смог найти доказательства, подтверждающие, что это признанный стандарт. Существует действительно мало информации о том, какое место должно быть предпочтительным. Это заставило меня поверить, что, возможно, я должен включить эту информацию как в блок doc уровня файла, так и в уровень первого уровня.
Некоторые примеры: OpenEMR, по-видимому, предпочитает использовать @author как внутри блока уровня файла, так и уровня уровня 1 (http://www.open-emr.org/wiki/index.php/How_to_Document_Your_Code_Properly). В документе не указано, что предназначено ли произойдет в то же время или только если файл не содержит класс, а скорее ряд функций:
/**
* library/sql_upgrade_fx.php Upgrading and patching functions of database.
*
* Functions to allow safe database modifications
* during upgrading and patches.
*
* Copyright (C) 2008-2012 Rod Roark <[email protected]>
*
* LICENSE: This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://opensource.org/licenses/gpl-license.php>;.
*
* @package OpenEMR
* @author Rod Roark <[email protected]>
* @author Brady Miller <[email protected]>
* @link http://www.open-emr.org
*/
/**
* inline tags demonstration
*
* This class generates bars using the main algorithm, which also
* works heavily with {@link foo()} to rule the world. If I want
* to use the characters "{@link" in a docblock, I just use "{@}link." If
* I want the characters "{@*}" I use "{@}*}"
*
* @author ahobbit
* @copyright middleearth.org XVII
* @version 1.2.3
*/
class bar
{
}
двух проектов, на которые ссылается ApiGen однако (Doctrine ORM API и Nette API), похоже, не используют тег @author в блоке doc уровня файла, но исключительно с блоком doc класса класса. Но тогда были единственные примеры, которые я видел, когда просматривали те, которые включали объявления классов.
Учение использует @author вместе с другими тегами, я бы подумал, размещая в док блока на уровне файлов, внутри блока уровня класса док (http://www.doctrine-project.org/api/orm/2.4/source-class-Doctrine.ORM.AbstractQuery.html#AbstractQuery):
/**
* Base contract for ORM queries. Base class for Query and NativeQuery.
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <[email protected]>
* @author Guilherme Blanco <[email protected]>
* @author Jonathan Wage <[email protected]>
* @author Roman Borschel <[email protected]>
* @author Konsta Vesterinen <[email protected]>
*/
abstract class AbstractQuery
{ ... }
Nette, в то же время только с помощью @author тег в контексте класса/интерфейса, как представляется, не использовать @license @copyright или @link на все:
/**
* Translator adapter.
*
* @author David Grudl
*/
interface ITranslator
{...}
/**
* Component is the base class for all components.
*
* Components are objects implementing IComponent. They has parent component and own name.
*
* @author David Grudl
*
* @property-read string $name
* @property-read IContainer|NULL $parent
*/
abstract class Component extends Nette\Object implements IComponent
{...}
Благодарим вас за ответ. Я знаю, что это возможно как на уровне документа, так и на уровне класса. Я надеялся, что продемонстрировал это своими примерами. Мой вопрос должен был выяснить, какое место подходит в этой ситуации. Как и в случае, если тег @author должен находиться в контексте уровня файла и когда на уровне класса один. –
См. Мое редактирование выше. –
Большое спасибо за ваше разъяснение. Это действительно помогло. Будет ли какая-либо ситуация, в которой вы чувствуете, что автор (ы) файла должен отличаться от того, в каком классе? Я бы не ожидал, что вы хотели сохранить того, кто автоматически сгенерировал файлы в вашем первом примере в блоке уровня файла? Если да, то почему это было бы важно? Чтобы узнать, кто принял первоначальное решение о макете? Однако только с именем и адресом электронной почты должно быть трудно прийти к такому выводу. –