Документирование кода
От: Sorc17 Россия  
Дата: 14.09.11 13:16
Оценка:
Думаю сейчас все программисты используют системы автоматического документирования кода типа javadoc, когда к полям, методам и другим вещам можно писать комментарии в особом формате, который затем распознаётся IDE и системой документирования для создания документации. Это очень удобно, когда читаешь чужой код, наводишь мышкой на какой-то незнакомый метод и тебе в подсказке всплывает его описание, сразу становится всё ясно и не нужно лезть искать этот метод чтобы прочитать его код или доказываться по названию о его назначении, когда это может быть не очевидно. Есть и минусы. Главный минус я считаю это то что код, после снабжения такими комментариями для системы документирования, становится сложно читать, потому что комментариев там больше чем самого кода. Загляните в какой-нибудь файлик стандартной ява библиотеки. Брр. И второй минус, это то что для создания красивой документации приходится использовать всякие специфические конструкции в комментариях и даже html-теги, после чего сам по себе комментарий прочитать становится сложно, зато в выводе системы документирования или при наведении мышкой на переменной комментарий будет красивый.

Используете ли вы комментарии для систем документирования сразу по ходу кодирования или пишите их только в более ли менее готовом продукте, который будет лежать в каком-нибудь .jar-е с отдельно поставляемой документацией? Может вы их вообще не пишите если заказчик не требует документацию?

Ну и вообще кто что думает насчет минусов и плюсов про которые я писал Дискасс в общем.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re: Документирование кода
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.09.11 13:23
Оценка: +1
Здравствуйте, Sorc17, Вы писали:

Использую .net. Пишу комментарии после завершения активной стадии разработки.
Основная проблема — при активной разработке комментарий быстро устаревает.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Документирование кода
От: Mamut Швеция http://dmitriid.com
Дата: 14.09.11 13:52
Оценка:
S> Ну и вообще кто что думает насчет минусов и плюсов про которые я писал Дискасс в общем.

Мне лично не хватает возможности аннотации кода по принципу добавления заметок в MS Word, например. Пишешь что-то и тут же бац — написал Note, описывающий, что ты делаешь.
Rojac v0.1 / rev. 666


dmitriid.comGitHubLinkedIn
Re: Документирование кода
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 14.09.11 14:30
Оценка:
S>Есть и минусы. Главный минус я считаю это то что код, после снабжения такими комментариями для системы документирования, становится сложно читать, потому что комментариев там больше чем самого кода.

Это смотря как их готовить. Комментари к объявлению функции на C++ с правильными альясами:
//x Что-то эта функция делает.
//r Описание возвращаемого значения.
bool Foo(
  //i Героический аргумент про который можно много всего хорошего
  //  и не очень написать.
  QStringList items,
  //o Краснознаменное возвращаемое значение, про которое тоже можно
  //  много всего написать, с ссылками на [CSomeModule], образцом
  //  использования кода:
  //  | if( ! VERIFY( Foo( QStringList() << "a" << "b", OUT result ) ) )
  //  | {
  //  |   return;
  //  | }
  //  И чем нибудь еще нужным и полезным.
  QStringList & result );


Что здесь нечитаемого?

S>Используете ли вы комментарии для систем документирования сразу по ходу кодирования или пишите их только в более ли менее готовом продукте, который будет лежать в каком-нибудь .jar-е с отдельно поставляемой документацией? Может вы их вообще не пишите если заказчик не требует документацию?


Я предпочитаю сразу все коментировать в нотаци, совместимой с извлекалками докуентаций. Хорошо время экономит.

S>Ну и вообще кто что думает насчет минусов и плюсов про которые я писал Дискасс в общем.


Минусы в том, что большинство современных языков разметки документаци в коде они какие-то... не для людей. Очень избыточный синтаксис . Приходится наворачивать над ними свои альясы как показано выше.
Re: Документирование кода
От: A13x США  
Дата: 14.09.11 15:56
Оценка: 1 (1) +1
Здравствуйте, Sorc17, Вы писали:

S>...Главный минус я считаю это то что код, после снабжения такими комментариями для системы документирования, становится сложно читать, потому что комментариев там больше чем самого кода. Загляните в какой-нибудь файлик стандартной ява библиотеки. Брр....


IMHO в "большой тройке" IDE для java элементарно настроить folding для комментариев (IDEA: Folding > Collapse Javadocs, netbeans: http://marxsoftware.blogspot.com/2008/08/netbeans-code-folding-and-case-for-code.html)
Re: Документирование кода
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 14.09.11 16:04
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Используете ли вы комментарии для систем документирования сразу по ходу кодирования или пишите их только в более ли менее готовом продукте, который будет лежать в каком-нибудь .jar-е с отдельно поставляемой документацией? Может вы их вообще не пишите если заказчик не требует документацию?


Нет, не использую систем документирования, а сейчас и IDE не использую. Ну а так названия метода и имена параметров в большинстве случаев достаточно. А если недостаточно, то смотрим исходник. Для меня минусы перевешивают.

Более интересна идея литературного (literate) программирования.
Re[2]: Документирование кода
От: Banned by IT  
Дата: 14.09.11 16:41
Оценка: 2 (2) +4
Здравствуйте, Eye of Hell, Вы писали:

S>>Есть и минусы. Главный минус я считаю это то что код, после снабжения такими комментариями для системы документирования, становится сложно читать, потому что комментариев там больше чем самого кода.


EOH>Это смотря как их готовить. Комментари к объявлению функции на C++ с правильными альясами:

EOH>
EOH>


EOH>Что здесь нечитаемого?

Всё.
За деревьями не видно кода.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Документирование кода
От: Banned by IT  
Дата: 14.09.11 16:45
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Более интересна идея литературного (literate) программирования.


У нас тут один чел литературно багрепорты пишет. Порой нифига не понятно в чём именно проблема то.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Документирование кода
От: licedey  
Дата: 14.09.11 16:58
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Думаю сейчас все программисты используют системы автоматического документирования кода типа javadoc



S>Используете ли вы комментарии для систем документирования сразу по ходу кодирования или пишите их только в более ли менее готовом продукте, который будет лежать в каком-нибудь .jar-е с отдельно поставляемой документацией? Может вы их вообще не пишите если заказчик не требует документацию?


Использую по привычке. Т.к. работаю с зарубежом, комментирую по английски для Doxygen. Вида:
//! This method do something


Пока обдумываю, что как реализовать метод или конструкции — пишу коменты.

S>Ну и вообще кто что думает насчет минусов и плюсов про которые я писал Дискасс в общем.


Главное не переборщить. У каждого своя мотивация писать комментарии. Вряд ли они пишутся для сопровождающих, если таких требований нет.
Re[3]: Документирование кода
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 14.09.11 17:05
Оценка:
Здравствуйте, Banned by IT, Вы писали:

BBI>Здравствуйте, Mystic, Вы писали:


M>>Более интересна идея литературного (literate) программирования.


BBI>У нас тут один чел литературно багрепорты пишет. Порой нифига не понятно в чём именно проблема то.


А это тут причем?
Re[4]: Документирование кода
От: Banned by IT  
Дата: 14.09.11 18:40
Оценка:
Здравствуйте, Mystic, Вы писали:

M>>>Более интересна идея литературного (literate) программирования.

BBI>>У нас тут один чел литературно багрепорты пишет. Порой нифига не понятно в чём именно проблема то.
M>А это тут причем?
К тому, что очень уж это геморно получится.
Человек человека порой может неправильно понять, не говоря уже про компилятор.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Документирование кода
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 14.09.11 19:50
Оценка:
EOH>>Что здесь нечитаемого?
BBI>Всё.
BBI>За деревьями не видно кода.

Можете привести пример документирования кода БЕЗ использования разметки системы автоматического документирования где бы за деревьями был хорошо виден код? Напоминаю, что вопрос топикстартера не о количестве и качестве комментариев, а о комментариях с разметкой для системы автоматического документирования.
Re: Документирование кода
От: Геннадий Майко США  
Дата: 14.09.11 19:56
Оценка:
Здравствуйте, Sorc17,

S>Ну и вообще кто что думает насчет минусов и плюсов про которые я писал Дискасс в общем.

--
Третий минус в том, что код и комментарии к нему могут потерять "синхронизацию".

Например, при изменении кода комментарии не изменились.

C уважением,
Геннадий Майко.
Re[4]: Документирование кода
От: Banned by IT  
Дата: 14.09.11 20:12
Оценка:
Здравствуйте, Eye of Hell, Вы писали:

EOH>Можете привести пример документирования кода БЕЗ использования разметки системы автоматического документирования где бы за деревьями был хорошо виден код? Напоминаю, что вопрос топикстартера не о количестве и качестве комментариев, а о комментариях с разметкой для системы автоматического документирования.


Комменты для системы автоматического докуменирования практически всегда засирают код.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Документирование кода
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 15.09.11 07:27
Оценка:
EOH>>Можете привести пример документирования кода БЕЗ использования разметки системы автоматического документирования где бы за деревьями был хорошо виден код? Напоминаю, что вопрос топикстартера не о количестве и качестве комментариев, а о комментариях с разметкой для системы автоматического документирования.

BBI>Комменты для системы автоматического докуменирования практически всегда засирают код


Попробую еще раз — а можете привести пример комментов не для системы автомаического документирования, которые, по вашему мнению, код не засирают?
Re[2]: Документирование кода
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.09.11 08:16
Оценка:
Здравствуйте, Eye of Hell, Вы писали:

EOH>Это смотря как их готовить. Комментари к объявлению функции на C++ с правильными альясами:

EOH>
EOH>//x Что-то эта функция делает.
EOH>//r Описание возвращаемого значения.
EOH>bool Foo(
EOH>  //i Героический аргумент про который можно много всего хорошего
EOH>  //  и не очень написать.
EOH>  QStringList items,
EOH>  //o Краснознаменное возвращаемое значение, про которое тоже можно
EOH>  //  много всего написать, с ссылками на [CSomeModule], образцом
EOH>  //  использования кода:
EOH>  //  | if( ! VERIFY( Foo( QStringList() << "a" << "b", OUT result ) ) )
EOH>  //  | {
EOH>  //  |   return;
EOH>  //  | }
EOH>  //  И чем нибудь еще нужным и полезным.
EOH>  QStringList & result );
EOH>


EOH>Что здесь нечитаемого?


Всё ! Код в 20-30 строчек превращается в 5-10 страниц и секундное дело превращается в получасовое листание страниц туда-обратно.

EOH>Я предпочитаю сразу все коментировать в нотаци, совместимой с извлекалками докуентаций. Хорошо время экономит.


Коментить лучше в отдельном репозитории для контрактов. комменты автоматически мерджатся с контрактами из рабочих бранчей и код не засоряется всяким говном.
Re[3]: Документирование кода
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 15.09.11 09:04
Оценка:
EOH>>Что здесь нечитаемого?
I>Всё ! Код в 20-30 строчек превращается в 5-10 страниц и секундное дело превращается в получасовое листание страниц туда-обратно.

Вы можете привести пример кода с комментариями не предназначенными для системы автоматической генерации докумнтации который вы оцениваете как читаемый?

I>Коментить лучше в отдельном репозитории для контрактов. комменты автоматически мерджатся с контрактами из рабочих бранчей и код не засоряется всяким говном.


А что им помешает рассинхронизироваться если они лежат в разных местах?
Re[2]: Документирование кода
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 15.09.11 09:07
Оценка:
ГМ>Третий минус в том, что код и комментарии к нему могут потерять "синхронизацию".
ГМ>Например, при изменении кода комментарии не изменились.

Соответствено чем ближе комментарии к коду, тем меньше шанс на рассинхронизацию?
Re[4]: Документирование кода
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.09.11 10:21
Оценка:
Здравствуйте, Eye of Hell, Вы писали:

I>>Всё ! Код в 20-30 строчек превращается в 5-10 страниц и секундное дело превращается в получасовое листание страниц туда-обратно.


EOH>Вы можете привести пример кода с комментариями не предназначенными для системы автоматической генерации докумнтации который вы оцениваете как читаемый?


Конечно. Смотри пример, декларативный код и комент только там где нет возможности выразить intention самим же кодом.

   class XXXImportExport
   {
        ...
        public IPersistance Config()
        {
           var config = Config(Format.CSV).
             Table(Chains).Into("Chains").When(ABC).Prompt("Chains ").
             ...
             ...
             Table(Systems).Into("Systems").When(BCD).Prompt("Systems ");           

           return config;
        }
        
        private Table Chains()
        {
            var chains = from Network
                         ...
                         ...
                         ...
                         select new { facility = fac, system = tSystem }; // chain нельзя экспортировать явно см. баг #нумер

            var table = Table(input:chains, create:(ctx)=>ctx.Create<Chain>() )
                                ...
                                ...
                                ...
                                .Column("ServerId").Export(x => x.system.ServerId).Import((x,v) => Import.ServerId(x,v));

            return table;
        }



I>>Коментить лучше в отдельном репозитории для контрактов. комменты автоматически мерджатся с контрактами из рабочих бранчей и код не засоряется всяким говном.


EOH>А что им помешает рассинхронизироваться если они лежат в разных местах?


Примерно как в коде — никто не в праве защитить репозиторий от умышленного нарушения кода.
Re: Документирование кода
От: maxkar  
Дата: 15.09.11 10:23
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Используете ли вы комментарии для систем документирования сразу по ходу кодирования или пишите их только в более ли менее готовом продукте, который будет лежать в каком-нибудь .jar-е с отдельно поставляемой документацией? Может вы их вообще не пишите если заказчик не требует документацию?


Использую. Везде. Исключение — методы, реализующие интерфейс или переопределяющие методы родителя. Назначение комментариев — описать человекочитемый контракт метода. То, что можно передавать в качестве параметров, чего стоит и чего не стоит ожидать в результате поведения метода. При использовании учитывается контракт метода, а не его реализация в каком-либо классе. В процессе работы может обновляться комментарий без тела метода (какое-то поведение явно занесли в контракт или явно написали, что оно не определено), может меняться тело метода без комментария (изменилась реализация метода).

Плюсы/минусы. Читать не мешает. Такие комментарии (для системы документирования) в IDE имеют свой уникальный стиль и цвет и с кодом не путаются. Более того, "документация" отличается визуально и от обычных комментариев в коде, так что этой путаницы тоже нет. Рассинхронизация кода с контрактом не допускается никогда (ну за исключением ошибок). Потому что если где-то изменяется контракт, нужно проверить всех его пользователей (так как они могут полагаться на старое поведение). Если же допущена рассинхронизация, значит, где-то может быть ошибка (потому, что "пользователь" не ожидает изменившегося поведения). Писать комментарии не сложно — это всего лишь явная словесная формулировка контракта. Если контракт сформулировать сложно, значит, стоит подумать над классом/методом/переменной еще. Ну и в ряде случаев комментарий позволяет по месту посмотреть необходимую информацию (какие-то граничные случаи, детали поведения и т.п.).
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.