Документирование interface в PHP проектах?

Интерфесы в PHP проектах

  • Нужно документировать

    Голосов: 18 85,7%
  • Не нужно

    Голосов: 3 14,3%
  • Укажу в топике

    Голосов: 0 0,0%

  • Всего проголосовало
    21
  • Опрос закрыт .

confguru

ExAdmin
Команда форума
Документирование interface в PHP проектах?

Сейчас пишу прототип большой и гибкой системы, задумался над таким вопросам
нужно ли добавлять PHPDOC к описанию interface.

PHP:
interface iTemplate
{
    /**
     * Enter description here...
     *
     * @param unknown_type $name
     * @param unknown_type $var
     */
    public function setVariable($name, $var);
    /**
     * Enter description here...
     *
     * @param unknown_type $template
     */
    public function getHtml($template);
}
Это описание редактор не подхватывает, а подхватывает только из имплементации.
Единственно что может помочь - при создании класса на основе интерфейса
можно скопипастить описание чтоб редактор подсвечивал :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Я обычно не документирую, если потом идет документация по методу в импелментации, как раз из-за того, что нет подсветки автоматом. Хотя с моими понятными названиями методой обычно и доки не сильно нужны.
 

FB3

Новичок
ИМХО, стоит писать. Zend Studio подхватывает к примеру.
 

shureen

Милорд Лось Кристофер
У меня чёт не подхватывает Zend Studio (7.0.1) нифига, приходится так же дублировать
 

FB3

Новичок
shureen
У меня 7.2.0 Build ID: 20100421

А что вообще мы имеем ввиду под подхватыванием? Всплывающую подсказку, которая выводит инфу о методе, которую мы прописали в PHPDOC? Тогда точно подхватывает у меня :)
 

weregod

unserializer
NuSphere phpEd 5.9 тоже не подхватывает, но сам phpDocumentor подхватит по-любому ;)
 

confguru

ExAdmin
Команда форума
Автор оригинала: FB3
shureen
У меня 7.2.0 Build ID: 20100421

А что вообще мы имеем ввиду под подхватыванием? Всплывающую подсказку, которая выводит инфу о методе, которую мы прописали в PHPDOC? Тогда точно подхватывает у меня :)
Попробуй в разных файликах разместить интерфейс и имплементацию.
 

Long

Новичок
однозначно нужно - часто в качестве "типа" приходится указывать интерфейс, и тогда студия не найдет определений
 

fixxxer

К.О.
Партнер клуба
однозначно нужно

в интерфейсе описывается что должно реализовываться

в классе, его реализующем, возможно, детали конкретной реализации (если таковые есть, что само по себе нехорошо).

проблемы реализаций иде не должны влиять на семантику и здравый смысл :)
 

Long

Новичок
fixxxer как раз если руководствоваться здравым смыслом, то не стоит, ибо "если что-то нуждается в комментировании, то это на 99% стоит переписать". да и поддержка актуальности большого и подробного комментария вызывает большие сомнения. лучше в тестах это отразить
 

newARTix

Новичок
вот мне всегда казалось, что интерфейсы для того и пишутся, чтобы тесты под них писались, а не они под тесты, не? Так что доку писать в тестах или в имплементациях... а нафига тогда вообще интерфейс?

Хотя этот вопрос меня вообще давно интересует :) Интерфейс этот такой сферический конь в вакууме, какой от него реальный толк?
 

fixxxer

К.О.
Партнер клуба
Long
да зачем большие? "implementation must bla bla bla" и только там, где возможны неочевидности.

как ты себе представляешь тест на интерфейс? :confused:

-~{}~ 26.08.10 02:10:

newARTix

типизация вида "я умею то-то". Например, все что угодно может быть datasource-ом и передаваться аргументом; принимающий же знает в этом случае, что оно умеет, положим, has($key) и get($key).
 

Long

Новичок
fixxxer
>как ты себе представляешь тест на интерфейс?
>в классе, его реализующем, возможно, детали конкретной реализации
ты сам сообщением раньше ответил на свое сообщение из будщего :)
 

whirlwind

TDD infected, paranoid
newARTix
там где тестируется реализация интерфейса - тест под интерфейс
там где тестируется пользователь интерфейса - интерфейс под тест (мок на интерфейс лучше мока на класс)

-~{}~ 26.08.10 06:29:

ЗЫ. Тест на интерфейс

PHP:
function testInterface() {
    $obj = new MySuppaDuppaClass();
    $this->assertType('ISuppaDuppa', $obj);
}
:D
 

fixxxer

К.О.
Партнер клуба
>> мок на интерфейс лучше мока на класс

а интересный подход, возьму на вооружение

-~{}~ 26.08.10 06:29:

:D
 

Здыхлик

Kohaner
Команда форума
Автор оригинала: Long
fixxxer ибо "если что-то нуждается в комментировании, то это на 99% стоит переписать". да и поддержка актуальности большого и подробного комментария вызывает большие сомнения.
Да ладно? Комментарии для лохов? Хорошее документирование зачастую помогает не лазить в различного рода мануалы и API. Особенно если код смотрит не его разработчик.
 

whirlwind

TDD infected, paranoid
А что комментировать в setVar($name, $value) ? какая конкретно часть непонятна? set, var, name или value? Вот если бы там было sv($a, $b) вот тогда другое дело. Хороший интерфейс не нуждается в комментариях, если на буквах не экономить. Единственный минус (пыха) - отсутствие retval в прототипе.
 

Здыхлик

Kohaner
Команда форума
А что мешает не экономить на буквах вообще, что в самом коде, что на его комментировании? Тем более, что помимо цели метода можно описать ожидаемые типы данных для параметров и возвращаемого результата и т.д. Проще написать комментарий сразу, потратив на это одну минуту, чем через месяц уныло прокручивать подзабытый код.

Согласен, с интерфейсами все не так сложно и запущено, как с обычными классам. Но все же - я за документирование. Как минимум, это дисциплинирует ))
 
Сверху