Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Комментирование кода

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yurkov_VV

Цитата:
 В каком смысле?

В смысле, что пользы от нее около нуля. Этот документ создан в 1994 году, 12 лет назад. Писать сугубо на C --- это очень здорово. Я рад, что Столлман написал Emacs сугубо на C, но писать на C, скажем, интерфейс пользователя --- бррр!
 
Форматирование, надо признать, убогое: тратится 4 пробела на отступ. Зачем отступать на строчках со скобками и делать весь текст в скобках еще с одним отступом? Вполне достаточно двух пробелов, причем не только на мой взгляд.
 
Отдельно сформатирован do-while. Тоже, надо признать, не очень удобно. И некрасиво.
 
Про коментарии ничего особенного. Согласен с тем, что функции надо называть грамотно, тогда и коментировать не придется.
 
Судя по тому, что

Цитата:
Следует явно описывать все аргументы функций. Не надо опускать их, поскольку их тип - int.

текст создавался до 1989 года, когда был принят Стандарт ANSI C. ANSI быстро отвык такие безобразия нарушать.
 

Цитата:
 А ты что на красоту смотришь или на содержание?

На документ в целом. Ты про "перловую кашу" слыхал? Именно по этой причине, чтобы содержание не терялось за убогой формой, в Python текст необходимо форматировать. Через год ты все равно забудешь, что писал, но в случае с Питоном ты хотя бы сможешь достаточно быстро это прочитать.
 
Ты знаешь, именно недовольство тем, как выглядело второе издание "Искусства программирования", побудило Дональда нашего Кнута создать TeX

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 20:01 15-08-2006 | Исправлено: TheChampion, 20:07 15-08-2006
Yurkov_VV



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
В смысле, что пользы от нее около нуля. Этот документ создан в 1994 году, 12 лет назад. Писать сугубо на C --- это очень здорово. Я рад, что Столлман написал Emacs сугубо на C, но писать на C, скажем, интерфейс пользователя --- бррр!  

Разве я сказал хоть слово о том, что на C нужно писать графические интерфейсы? (Хотя я писал на gtk+)

Цитата:
Форматирование, надо признать, убогое: тратится 4 пробела на отступ. Зачем отступать на строчках со скобками и делать весь текст в скобках еще с одним отступом? Вполне достаточно двух пробелов, причем не только на мой взгляд.  

Экономим четыре байта?
Аргументируется это тем, что для редакторов, поддерживающих свёртывание блоков, это очень удобно.
А количество пробелов для отступа устанавливается в настройках редактора.

Всего записей: 24 | Зарегистр. 06-10-2005 | Отправлено: 05:42 18-08-2006
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yurkov_VV

Цитата:
Экономим четыре байта?

Не 4, а 2, если уж на то пошло.

Цитата:
Аргументируется это тем, что для редакторов, поддерживающих свёртывание блоков, это очень удобно.  

Полная ерунда! У меня MSVS2005 сворачивает блоки и без этого.

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 08:04 18-08-2006
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yurkov_VV

Цитата:
Экономим четыре байта?
Аргументируется это тем, что для редакторов, поддерживающих свёртывание блоков, это очень удобно.
 

Экономим не 4 байта, а 4 пробела экранного места на каждую вложенность. Не у всех мониторы способны вывести всю строку длиной в 100 символов, из которых первые 60 будут сплошные пробелы. А, я думаю, многие согласятся пожертвовать свертыванием блоков для того чтобы видеть все что написано в строке.
Про то что строки должны быть меньше 70 символов или про wrap писать не надо.
 
Если не секрет, что за редакторы (кроме emacs) умеют по отступам определять блоки?
Если не ошибаюсь, современные редакторы умеют это делать исходя из собственных синтаксических анализаторов. На вскидку скажу про VS и Komodo.
 
Про
Цитата:
А количество пробелов для отступа устанавливается в настройках редактора.

Не знаю как другие, но для меня, если количество пробелов меньше 4, отступ просто не видно. Поэтому экономить на этом не получится.
 
А приведенный выше документ - это не догма для разработчиков, а попытка собрать воедино весь опыт написания программ в рамках проекта GNU. Там оно действительно, может и нужно. Слишком разное оборудование, слишком разные возможности устройств вывода.
 
В окружении Windows (да и Linux тоже) современные средства программирования (особенно ООЯ) дают возможность более критически относиться к этим правилам, особенно для людей не работающих в проекте GNU.
А по поводу коментирования C++ программ уже писалось. Сам язык позволяет делать легко читаемые программы, в отличие от чистого С.

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 08:11 18-08-2006
XDiaBLo



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kukabarra

Цитата:
если код сложный - лучше нарисовать в визио схему, где все гораздо более наглядно и понятно, чем в комментах (главное не забывать ее обновлять, чтоб не устарела к чертям)  

Если код намечается сложный, то лучше его спроектировать заранее хорошенько, и не в Визио, а в Rational Rose например. А комментарии это не заменит. Они самостоятельную ценность имеют.

Всего записей: 244 | Зарегистр. 13-05-2004 | Отправлено: 09:19 18-08-2006
grooz

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для документации - doxygen. Он же нарисует красивую диаграмму для классов. Отступы - по 4 пробела минимум, иначе просто всё сливается в глазах. Или все 8. Если код не умещается на экране - это плохой код. Как писал Торвальдс, "if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program".

Всего записей: 1 | Зарегистр. 15-03-2006 | Отправлено: 14:47 18-08-2006
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
grooz

Цитата:
Если код не умещается на экране - это плохой код. Как писал Торвальдс, "if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program".

Ну я бы не стал так категорично все ограничивать тремя уровнями вложенности.
Разве никто не писал в функции switch, в котором есть if? Вот и уровни исчерпаны. А если туда над switch добавить цикл, тогда что, все операции внутри switch в функции (методы) выносить?
Посмотрите на свой (или чужой) метод обработки OnPaint (или WM_PAINT). Там везде много различных ньюансов, которые решаются введением операций ветвления. Мне лично лениво писать для каждого ньюанса свою функцию.
А если, еще посмотреть анонимные функции, которые введены в .NET Framework 2.0, там вообще отступов будет куча.
 
По поводу doxygen - писал где-то рядом. Повторюсь. Пробовали, интересно было. Много чего наворочали в h и cpp файлы. Документация была - прелесть какая. Через две недели заглянули в исходники - снесли все нафиг. Ничего не было понятно пока не убрали все doxygen-овские коментарии.
Кстати, есть где-нибудь внятные описания того, как пользоваться doxygen-ом и при этом не испохабить код?

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 08:32 21-08-2006
Xarde



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как писал Торвальдс, "if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program".

Думаю, Торвальдс и сам нередко отступает от этого правила.
Если он всегда будет им руководствоваться, то в коде будет слишком много функций, которые не всегда можно назвать так, чтобы было понятно. Как следствие, код станет менее понятным и более тормознутым (каждый вызов функции требует доп.ресурсы). Так что...

Всего записей: 266 | Зарегистр. 06-07-2003 | Отправлено: 11:55 21-08-2006
KADABRA



Великий покусатель
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нашел интересное мнение на счёт систем генерирования документации по комментариям

Цитата:
Посмотрев исходники очередного открытого проекта четко понял, что всевозможные системы, использующие "хитрые" комментарии в коде для построения документации - это бред.  
 
Комментарии в коде нужны, для того чтобы легче было понимать код.  
 
Если же они набиты всякими хитрыми кодами и служат для автоматического построения документации, то пользы от как от комментариев - почти никакой. С точки зрения получившеся документации - тоже не праздник. Просто набьор описаний классов и методов, т.е. слабенькое описание API.  
 
Это похоже на нежелание разработчиков писать нормальную документацию (а не конспект API) и попытку свалить все это на некоторые автоматические тулзы.  
 
Но в результате мы имеем трудночитаемый код и уродскую документацию. IMHO тогда уж лучше просто код с нормальными комментариями - по этому легко можно разобраться в коде. И если есть желание, то можно по этому коду можно и документацию написать. Только тогда она должна быть нормальной, а не такой как в таких проектах как OGRE, NeoEngine, cald3d и т.п.

(http://steps3d.animekazan.net/)

Всего записей: 1718 | Зарегистр. 14-07-2003 | Отправлено: 22:06 01-09-2006
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xarde

Цитата:
 Если он всегда будет им руководствоваться, то в коде будет слишком много функций, которые не всегда можно назвать так, чтобы было понятно. Как следствие, код станет менее понятным и более тормознутым (каждый вызов функции требует доп.ресурсы). Так что...  

inline еще никто не отменял :-)
Хотя с тем, что надо следовать этому правилу всегда, не поспоришь

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 00:04 02-09-2006
Xarde



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
inline еще никто не отменял

Не отменял, конечно, никто. Но от большого числа инлайновых функций результирующая программа станет толще. Даже в наше время немалых дисковых пространств размер может играть значение - многие пишут вообще не задумываясь о конечном размере и получают 200 мегабайт вместо 20.
Правда, этим чаще грешат всё же новички.

----------
Реальность - это то, что продолжает существовать, когда перестаёшь в это верить.
Филип К. Дик

Всего записей: 266 | Зарегистр. 06-07-2003 | Отправлено: 16:33 02-09-2006
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xarde

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

Можно подумать, она станет тоньше от того, что ты вставишь текст этих функций в места их вызовов. :-)

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 21:10 02-09-2006 | Исправлено: TheChampion, 21:10 02-09-2006
Xarde



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я имел в виду не исходники, а exe/dll

Всего записей: 266 | Зарегистр. 06-07-2003 | Отправлено: 21:44 02-09-2006
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xarde
А в чем разница?

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 02:12 03-09-2006
Xarde



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ладно, продолжим оффтоп.
Ну как же? Вместо обычных функций ставится вызов кода, лежащего где-то в одном месте. Вместо инлайновых ставится непосредственно код. Если у тебя в программе много инлайновых функций, то исполняемый код будет толще, чем если бы они были обычными. Это справедливо в том случае, если делать инлайновыми не только те, что для этого хорошо подходят, но вообще как можно больше функций.
 
З.Ы. Или мы говорим про разные вещи или... не понимаю, зачем нужно объяснять принципы инлайновых функций человеку, который и так их знает.

Всего записей: 266 | Зарегистр. 06-07-2003 | Отправлено: 11:21 03-09-2006
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xarde
Видимо мы друг друга не поняли. Я только хочу сказать, что если в исходнике заместить функции их кодом при помощи Cut'n'Paste, то размер исполняемого файла возрастет в той же мере, а никак не уменьшится :-)
 
Про то, что не стоит делать все функции inline --- понятно и так. Inline-функции делают исходный код короче и понятнее, а исполняемый файл, понятное дело, увеличится :-)

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 13:51 03-09-2006
taiwan

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это точно:
 

Цитата:
inline еще никто не отменял  
Хотя с тем, что надо следовать этому правилу всегда, не поспоришь


Всего записей: 13 | Зарегистр. 14-09-2005 | Отправлено: 05:35 23-03-2009
NvvLazyTiger



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет.
 
Рискну, пожалуй, упомянуть небольшую нишу прикладного программирования, где объём и качество комментариев достаточно важны.
 
Это интерпретируемые технологические серверные скрипты.
 
Когда падает серьёзный процесс,.. когда повторные запуски "на бис" (для локализации проблемы) нежелательны, а то и под прямым запретом, когда документации нет или она чёрт знает где, а коды этого процесса последний раз правились... не один год тому как, когда в наличии только логи, конфиги и собственно тексты скриптов, когда часики тик-тик-тик, а мозги по большей части заняты эмоциями...
 
Вот тогда-то и ощущается в полной мере значение обильных качественных комментов.
 
... А ведь впереди будет ждать ещё и отчёт начальству, с предъявлением фактов и с указанием виновных-с...
 
NB. На моих серверах крутится в непрерывном автоматическом режиме больше сотни интерпретируемых скриптов общим объёмом ~0,5Mb + под две сотни конфигов к ним (+0,2Mb). И большая часть указанных объёмов - комментарии...
 
... Как говорится, - "испытано на своей шкуре".
Smile
 
Вдогонку. Пока писал, выпали из внимания вопросы пилотного поста.
 
1. "Кто как комментирует свой код[?]" - [я -] обильно и детально.
2. "что пишете в комментариях?" - что собственно делается, зачем, ожидания и последствия.
3. "Используете ли ПО для генерации документации из комментариев?" - нет.
 
---
Удачи!
Влад.

Всего записей: 257 | Зарегистр. 14-02-2009 | Отправлено: 07:41 11-11-2016 | Исправлено: NvvLazyTiger, 08:34 11-11-2016
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 при недописанном коде нужны FIXME и TODO (и IDE, которая их сама находит и показывает). от просто "комментов" там толку мало.

согласен, это очень помогает.

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 09:42 11-11-2016
LadyOfWood

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Кто как комментирует свой код, что пишете в комментариях?  
Используете ли ПО для генерации документации из комментариев?

Достаточно скупо только по делу, ясно дело из такого ничего не нагенеришь.
Цитата:
Как писал Торвальдс, "if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program".

It depends. Иногда бывает длинный код и простой как три копейки, иногда короткий но черт голову сломит.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 21:45 11-11-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Комментирование кода


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru