Вышел новый Visual Assist
Oct. 5th, 2006 12:40 amДля тех кто не в курсе, это такая довольно глючная и дорогая как самолет фигулина, которая из MS Visual Studio делает бледное подобие Эклипса или IDEA.
Не прошло и пяти лет как НебитыеПомидоры изобрели рефакторинг. Сижу, читаю про этот рефакторинг, и в конце там есть абзац про то что VAX нынче умеет автоматично документировать методы. То есть по нажатию кнопули генерит что-то типа

Я вот второй день пытаюсь понять - а зачем это? Вот что такого написано в первых 10-ти строчках, чего не написано в 11-ой? Разве что квалификатор public. Вообще, люди, которые называют это "документированием кода" и придумали такую "документацию", они как, головным мозгом оснащены или все же конструкцией не предусмотрено? Типа как поворотники у Волги?
UPD: Имеет место быть непонимание. Я знаю зачем нужна документация хотя бы на "экспортируемый" код и вообще знаю зачем нужно документировать. И я сам пользуюсь частично автоматично сгенерированной документацией (Qt). Я не это спрашивал. Я спрашивал зачем нужна конкретно вот эта вот (ну или аналогичная) хуйня, которую генерирует VAX в виде якобы заготовки документации. Информационно он мог бы генерировать /* */ и это было бы ровно тоже самое.
Не прошло и пяти лет как НебитыеПомидоры изобрели рефакторинг. Сижу, читаю про этот рефакторинг, и в конце там есть абзац про то что VAX нынче умеет автоматично документировать методы. То есть по нажатию кнопули генерит что-то типа

Я вот второй день пытаюсь понять - а зачем это? Вот что такого написано в первых 10-ти строчках, чего не написано в 11-ой? Разве что квалификатор public. Вообще, люди, которые называют это "документированием кода" и придумали такую "документацию", они как, головным мозгом оснащены или все же конструкцией не предусмотрено? Типа как поворотники у Волги?
UPD: Имеет место быть непонимание. Я знаю зачем нужна документация хотя бы на "экспортируемый" код и вообще знаю зачем нужно документировать. И я сам пользуюсь частично автоматично сгенерированной документацией (Qt). Я не это спрашивал. Я спрашивал зачем нужна конкретно вот эта вот (ну или аналогичная) хуйня, которую генерирует VAX в виде якобы заготовки документации. Информационно он мог бы генерировать /* */ и это было бы ровно тоже самое.
no subject
Date: 2006-10-04 09:32 pm (UTC)no subject
Date: 2006-10-04 09:53 pm (UTC)no subject
Date: 2006-10-05 03:33 am (UTC)no subject
Date: 2006-10-05 08:30 am (UTC)no subject
Date: 2006-10-04 09:40 pm (UTC)no subject
Date: 2006-10-04 09:48 pm (UTC){
что-то типа
QPL_FORCECORE(nRow == -123456);
Как и граничные условия для параметров я стараюсь документировать ассертами или обычными проверками (но ассерты как-то эксплицитнее).
Такой метод писания документации хорош еще и тем что он более typesafe. Если я поменяю тип nRow на unsigned, то умному ассисту может хватить ума поменять тип в "документации", но вот отрицательное значение в чешской фразе он вряд ли поймет. А QPL_FORCECORE сгенерирует ворнинг.
Вообще, имхо, такого типа документация похоже предназначена для людей, которые будут читать код не понимая языка программирования, на котором он написан. Жажду объяснений от почтенной публики зачем бы это было надо?
При том что существуют люди, которые вот эту вот белиберду пишут даже не автоматичными средствами, а вручную.
no subject
Date: 2006-10-04 10:45 pm (UTC)no subject
Date: 2006-10-04 11:06 pm (UTC)Программа - живое существо. Зачем в живое существо натыкивать мертвого пластика? Пластик не растет и не изменяется, а программист вместо программирования начинает заниматься литературным трудом. Об отличиях одного от другого, кстати, написал только что Грэм.
Представим себе что мы живем в доме, где на каждом архитектурно-инженерном элементе написано что это такое. Пол, стена, балка, унитаз, петля, ручка, розетка и т.д. Интересно, психически уравновешенный человек долго продержится? И это ведь еще облегченный вариант, по-настоящему должно быть "стена 4х3м с пятью дырками 8мм на высоте 1.5м от [a href=floor.doc]пола[/a], etc, etc, etc". И про просверливании дырки под картинку надо было бы пройти по цепочке и проапдейтить все описания.
no subject
Date: 2006-10-05 08:47 am (UTC)Я понимаю и в целом разделяю твою позицию, но это некоторый максимализм. Есть вещи, которые не укладываются ни в название метода, ни в список параметров, ни в ассёрты. Да и просто искать там по коду, с какого бодуна оно кидает эксепшн X - не фонтан.
no subject
Date: 2006-10-05 12:57 pm (UTC)Здрасьте, не мешает. Hot fucking news.
Смотрим опять на скриншот. Коэффициент полезного действия 1/11ая, меньше 10%. Это конечно передерг, потому что кода там ровно одна строчка, но у меня регулярно встречаются методы по 10-15 строк, на которых КПД использования screen estate получается чуть больше 50%. Я понимаю что современные редакторы, специально приспособленные для таких уебков-программистов, имеют режим скрывания комментариев. Это отлично же! Сначала автоматично пишем, потом скрываем и никогда больше не показываем. А читает это только опять автоматичный скрипт, который генерирует документацию, которую уже совсем никто не читает, потому что ничего полезного там не написано (ибо некем). Зато, бля, индустриально произведенный код! Не выебем, так хоть согреемся.
> если меняется не _реализация_ (это не требует апдейта описания) а _суть_ метода, то хорошо бы делать другой метод.
ОК, меняется реализация. Например метод sort(). Сортирует bidirectional iterator. Тут мы меняем немного алгоритм и наш сорт() теперь требует рандом итератор. Че, назовем его randomSort(), да?
И вообще, ты что, на самом деле пишешь в комментарии почему метод кидает эксепшн? А в код ты при этом это писать не забываешь? Я б точно забыл. Я пишу в код, а если мне хочется узнать когда оно это бросает я набираю в редакторе /throw X
Еще раз - я плохой английский читаю медленнее чем даже плохой С++. Думаю что и хороший английский тоже.
no subject
Date: 2006-10-05 08:39 pm (UTC)no subject
Date: 2006-10-04 11:15 pm (UTC)no subject
Date: 2006-10-05 12:06 am (UTC)