Хороший, Плохой И Ужасный Комментарий

Зачем нужны комментарии, правда ли, что хороший код можно прочитать и без них и как перфекционизм замедляет разработку в 4 раза.

Новички, команды, профессионалы.



Хороший, плохой и ужасный комментарий

«Хороший, плохой, злой», 1966 г.



Интуитивные знакомства

комментарии, как и в любых отношениях, создают скрытые проблемы.

Из stackoverflow или своего творчества мы неосознанно формируем стиль комментирования.

Некоторые излишне подробные, некоторые с юмором, третьи пишут «без комментариев» и через полгода даже не пытаются понять, как работает их код. P.S. Если вы тот человек, который узнал о комментариях в коде из книги, дайте знак) Если вам нужны ответы сразу, то они в конце.

В небольшой веб-студии или в сольных проектах мы сами себе указываем и можем там даже шутки писать; вопрос о «технологии» комментирования возникает при переходе к командной разработке, особенно если есть поддержка продукта.

Чтение чужого кода становится не наказанием, а ежедневным занятием.

Но сначала это тоже наказание, пока не наступит момент Х, момент поиска знаний .

Это особенно важно, когда этот момент наступает для всей команды или даже отдела.

Ни при каких обстоятельствах нельзя его упускать – это шанс коллективно изменить ситуацию к лучшему; очередной момент такого «кипения» в небольшом проекте может и не наступить, т.к.

код накапливается, как и отчаяние.

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



Хороший, плохой и ужасный комментарий

https://shoot-photo.com/desktop-wallpaper-zen.html

Идеальный код -

это перевод названия книги * .

Из 950 страниц осмысленного текста популярность приобрела одна фраза: " хороший код самодокументируется И этому есть пояснения в виде: «хороший код не нуждается в комментариях», «понятно называйте переменные и методы, тогда комментарии не нужны».

Круто быть таким категоричным, а главное просто.

Но к чему это приводит? Часть превращает комментарии в искусство, стремится к идеалу и 20 минут размышляет над заголовками.

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

Оба полезны, но забывают о «смысле жизни» комментариев.

Из возможных 20% времени программирования, которыми располагает одиночный разработчик, в команде остается только 5.
Креативность и точность – это очень красиво, но когда они помогают достичь цели.

Четкие названия, комментарии и другие инструменты необходимы для уменьшить неопределенность .

В приведенном выше примере 20% времени уходит на программирование и 80% на решение, что и как программировать, изучение контекста, технических характеристик.

Это большая часть работы, выполняемая по умолчанию.

И чем масштабнее проект, тем ближе к 100% можно «терпеть»/ «ничего не делать» (нужное подчеркнуть).

Чтение даже идеального кода == не программирование.

Возникает ситуация как при поиске по файлам в Win - человек перебирает все файлы, строки, операции, чтобы найти "то самое" место, где его ждет работа, вместо того, чтобы перебирать индексы и через минуту выдавать новую строчку кода .

Вторая функция комментариев обеспечить быструю навигацию .

Все остальное — всего лишь форма.

Помните смысл, тогда это будет канал, а не плотина ограничений и бюрократии.

* Код завершен, Стив МакКоннелл, 1993. Чтобы сохранить смысл, правильнее было бы перевести как «Завершение кода» или «Завершенный код».

Комментарии — это то, что делает код законченным, готовым к «эксплуатации» пользователями и разработчиками, а также обеспечивает комфортность его модификаций.



Ответы

P.S. Существует множество руководств по форматированию кода и комментариев; вместо еще одного, вот несколько моментов для размышления.

  1. Есть разные способы «использования» кода и комментарии к ним разные.

    1. Подключение к «черному ящику» — пользователя интересует только то, что находится на входе/выходе.

      Обычно в виде заголовка в файле класса и рядом с методами.

      Хорошо в шапке указать дату обновления и список методов (контента).

      Идеальное использование: прочтите и используйте за минуту.

    2. Открытая библиотека — возможны большие комментарии с описанием принципов, данных и нюансов конкретных решений в коде.

      Я читаю его полчаса, использую и учусь дальше в процессе.

    3. Разработка — комментарии в коде короткие, описывающие этапы, группы/блоки операций, а также комментарии типа TODO (сделать), FIX (исправить) и т.п.

      Они не дублируют код, а иллюстрируют его как краткое изложение пунктов.

      .

      В идеале: посмотрите шапку, пройдитесь по описаниям и за пару минут найдите нужное место — вы работаете.

  2. Неопределенность и навигация .

    Вы можете прочитать 10 000 строк идеального кода, понять его и исправить 3 строчки.

    Хорошие комментарии — те, которые позволяют сделать это «сразу», а не к обеду.

    Документирование архитектуры (по крайней мере) было бы плюсом, но это уже другая история.

  3. красота – Однообразие – это не только красиво, но и понятно.

    Привычное воспринимается быстрее.

    Определите удобные для вас правила построения команды.

  4. Шаблоны — облегчают жизнь, но без фанатизма, функции имеют необязательные параметры.

  5. незавершенность - буквально.

    Пока код используется, он не является полным.

    Не относитесь к нему как к памятнику, «камню, из которого удалено все ненужное».

    Искусственные блоки для кода, дополнительные строки для визуального разделения, рабочие комментарии, идеи… Все это может случиться, если соответствует духу вашей команды.

На этом у меня все, удачи! P.S. Буду рад дополнить статью идеями из.

комментариев.

В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

Комментирую.

68,33% от души =) 41 31,67% по регламенту/шаблонам и вообще как надо 19 проголосовали 60 пользователей.

24 пользователя воздержались.

Теги: #программирование #Анализ и проектирование систем #ИТ-стандарты #проектирование и рефакторинг #ревью кода #документация #комментирование кода

Вместе с данным постом часто просматривают: