Интересно, что читаемость применительно к естественному языку измеряется скоростью чтения и понимания. Я предполагаю, что простое правило действительно может быть принято, если конкретный комментарий к коду не улучшает это свойство, его можно избежать .
Почему комментарии?
Хотя комментарии к коду являются формой встроенной документации, в языках высокого класса существует множество способов избежать излишнего «чрезмерно документированного» программирования (значимого кода) с использованием элементов самого языка. Также плохая идея превращать код в списки из учебника по программированию, где отдельные утверждения буквально объясняются почти тавтологическим образом (обратите внимание на пример "/ * приращение i на 1 * /" в уже предоставленных ответах), делая такие комментарии актуальными только для программистов, неопытных с языком.
Тем не менее, это намерение попытаться прокомментировать «недокументированный» (но бессмысленный) код, который действительно является «источником всего зла». Само существование «недокументированного» кода является плохим сигналом - либо это неструктурированный беспорядок, либо дурацкий взлом мистической утраченной цели. Очевидно, что ценность такого кода, по крайней мере, сомнительна. К сожалению, всегда есть примеры, когда действительно лучше ввести комментарий в раздел (визуально сгруппированных) отформатированных строк кода, чем заключить его в новую подпрограмму (обратите внимание на «глупую последовательность», которая «является хобгоблином маленьких умов») ,
Читаемость кода! = Комментарии кода
Читаемый код не требует аннотации к комментариям. В каждом конкретном месте кода всегда есть контекст задачи, которую этот конкретный код должен выполнить. Если цель отсутствует и / или код делает что-то загадочное = избегайте этого любой ценой. Не допускайте странных хаков для заполнения вашего кода - это прямой результат объединения ошибочных технологий с отсутствием времени / интереса для понимания основ. Избегайте мистического кода в своем проекте!
С другой стороны, читаемая программа = код + документация может содержать несколько допустимых разделов комментариев, например, чтобы облегчить создание документации «комментарии к API».
Следуйте стандартам стиля кода
Как ни странно, вопрос не в том, зачем комментировать код, а в командной работе - как создать код в высоко синхронизированном стиле (который все остальные могут читать / понимать). Соблюдаете ли вы какие-либо стандарты стиля кода в вашей компании? Его главная цель - избежать написания кода, который требует рефакторинга, является слишком «личным» и «субъективно» неоднозначным. Таким образом, я думаю, если кто-то видит необходимость в использовании стиля кода, есть целый ряд инструментов, как правильно его реализовать - начиная с обучения людей и заканчивая автоматизацией для контроля качества кода (многочисленные ссылки и т. Д.) И (ревизия). интегрированные системы контроля).
Станьте евангелистом по читабельности кода
Если вы согласны, что код читается чаще, чем написано. Если для вас важно ясное выражение идей и ясное мышление, независимо от того, какой язык используется для общения (математика, машинный код или древнеанглийский) .. Если ваша миссия состоит в том, чтобы искоренить унылый и уродливый способ альтернативного мышления .. (извините последний - из другого "манифеста") .. задайте вопросы, инициируйте дискуссии, начните распространять книги, заставляющие задуматься о чистке кода (вероятно, не только что-то похожее на шаблоны проектирования Бека, но больше как уже упоминавшиеся Р. К. Мартином ), которые решают неоднозначность в программировании. Далее идет ключевой отрывок ключевых идей (цитата из книги О'Рейли о читабельности)
- Упростите именование, комментирование и форматирование с помощью советов, применимых к каждой строке кода
- Уточните циклы, логику и переменные вашей программы, чтобы уменьшить сложность и путаницу
- Атака проблем на уровне функций, таких как реорганизация блоков кода для выполнения одной задачи за раз
- Напишите эффективный тестовый код, который будет полным и лаконичным, а также читаемым
Вырезая «комментирование», у одного все еще остается много (я думаю, написание кода, который не нуждается в комментариях, является одним из отличных упражнений!). Называние семантически значимых идентификаторов - хорошее начало. Далее, структурирование вашего кода путем группировки логически связанных операций в функции и классы. И так далее. Лучший программист - лучший писатель (конечно, с учетом других технических навыков).