Как убедить людей комментировать свой код [закрыто]

38
задан 8 revs, 3 users 50% 23 May 2017 в 11:44
поделиться

38 ответов

Лучший способ убедить человека состоит в том, чтобы заставить их понять его самостоятельно. Заставьте их отладить хорошо прокомментированный код. Это покажет им, на что хороший комментарий похож - комментарии бесполезны, если они действительно не передают релевантную информацию (который обычно является, "почему", потому что код описывает "какой"). Они заметят, насколько легкий это. Тогда позвольте им возвратиться к части своего старого кода. Они заметят, как трудно это. Вы не только показали им, что не сделать, но что сделать (это более важно). Вы не должны больше делать. Кроме того, Вы не должны пытаться убедить их устно. Они просто должны понять потребность прокомментировать код их собственным способом. Это, конечно, предполагая, что код, который должен быть прокомментирован, не сам объяснительный.

4
ответ дан 3 revs 23 May 2017 в 11:44
поделиться
  • 1
    Это, также иллюстрирует, почему необходимо обратить внимание на порядок аргументов, если Вы обеспокоены производительностью. Если порядок аргументов в предикате f был инвертирован, то этот wouldn' t произошли, потому что начальными аргументами больше не является то же, и так не оставляйте точку выбора. Это происходит, потому что большинство прожурналов выполняет индексацию аргумента, которая позволяет предикатам с несовместимыми аргументами быть сокращенными от пространства поиска заранее. Пролог SWI только индексирует первый аргумент по умолчанию, но это может быть изменено. – nedned 26 July 2010 в 01:58

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

0
ответ дан mcrute 23 May 2017 в 11:44
поделиться

Это - печальное то, что подавляющее большинство программистов не прокомментирует их код правильно, пока они не закончат с другой стороны плохой документации. Застревающий, поддерживая приложение, испытывающее недостаток в четких комментариях, просто ужасно. Обычно право после этого (IME), комментирует в потоке кода.

Да, это произошло со мной, и я комментирую полностью теперь.

0
ответ дан cciotti 23 May 2017 в 11:44
поделиться
  • 1
    Я отредактировал свой ответ с протестированным кодом на этот раз:) – LiraNuna 15 September 2009 в 03:51

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

Также показывают им преимущество чего-то как SandCastle.

0
ответ дан Flo 23 May 2017 в 11:44
поделиться
  • 1
    Эта идея, кажется, отвечает на мой вопрос. I' ve, программируя в C в течение многих лет, но моих проблем, обычно практичны, и вещи как мобильность редко подходят. I' m несколько удивленный тем, как архитектура играет роль в такой простой ситуации. Спасибо, Lira и Thomas также, у которого было достойное обходное решение, но этот, кажется, полный ответ. – Dr. Person Person II 16 September 2009 в 00:40

Скажите им документировать свои функции и интерфейсы с Javadoc комментариями и затем выполнять код через Doxygen для генерации прохладно выглядящей документации HTML для их кода. Фактором прохлады может иногда быть хороший фактор мотивации.

1
ответ дан Ates Goral 23 May 2017 в 11:44
поделиться

Я использую одну тонкую технику:

я установил уровень предупреждений в проекте, о котором сообщат как ошибки. И наш Непрерывный Сервер интеграции создает целое решение наряду с документацией XML на каждого ckeck-в.

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

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

1
ответ дан ljubomir 23 May 2017 в 11:44
поделиться

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

Сбой, которые (принятие Вы - супервизор / менеджер) делают его частью их служебной аттестации. Если можно измерить его, можно оценить на основе его.

Гарантируют, что это - РАССМОТРЕННЫЙ комментарий, что Вы выигрываете на, поскольку пассивно-агрессивный devs зарегистрирует каждый последний оператор как not-so-subtle FU.

1
ответ дан Todd Williamson 23 May 2017 в 11:44
поделиться

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

В Вашем случае, прося, чтобы Ваши некомментирующие разработчики провели час или два объяснения их кода, возможно, "медленной" аудитории, возможно, в течение их обеда, "для предотвращения уменьшения проекта", будет иметь большое значение. Умные люди - даже упрямые - учатся быстро!

1
ответ дан Adam Liss 23 May 2017 в 11:44
поделиться

Записи, что метод / класс будет делать прежде на самом деле кодировать, это помогает много разобраться в нем - и Вы прокомментировали его.

0
ответ дан Hans-Peter Störr 23 May 2017 в 11:44
поделиться

"При записи Кода" = "Запись последовательности команд на специальном языке" + "Пишущие комментарии"

Это должно быть самоочевидно для комментария кода при записи его ! Вы когда-либо комментировали код, которому уже 3 или 4 месяца? (Конечно, Вы имеете, и это было все остальное кроме забавы!)

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

1
ответ дан 2 revs 23 May 2017 в 11:44
поделиться
  • 1
    Thomas. You' ответ ре, кажется, работает лучшее (под моим текущим уровнем понимания. То, что вызвало проблему, - то, что я предполагал, что выполнение (size_t) наследует тип anIntVariable, но ее doesn' t. I' ll сохраняют вопрос открытым в течение еще нескольких дней и затем отмечают это как принятый ответ. Я все еще должен все же найти поведение продвижения типа выражений, содержащих (size_t), который связан с моим вопросом. – Dr. Person Person II 14 September 2009 в 23:31

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

1
ответ дан Hans-Peter Störr 23 May 2017 в 11:44
поделиться

Только наймите хороших инженеров, которые удостоверяются, что их код неявно указывает намерение (использующий комментарии и иначе). Любой, кто хочет задание, должен будет сделать его правильно. Резкий, но справедливый, по моему скромному мнению.

0
ответ дан Jeff Yates 23 May 2017 в 11:44
поделиться

Я нахожусь также в лагере меньшего количества комментариев лучше, и для этого для работы он требует ясного краткого кода, который является к точке. Таким образом, это - то, где я запустил бы с них. Скажите им, что они не должны комментировать, пока они пишут лучше, более ясный, сам комментирующий код.

0
ответ дан mattlant 23 May 2017 в 11:44
поделиться

Я никогда не имею за десять лет разработки, замеченной комментарий, который на самом деле сказал мне что-то полезное о коде. Комментарии обычно устарели или указывают очевидное. Как только Вы пишете им, это - еще одна вещь поддержать. Я думаю, что единственной разумной вещью прокомментировать было бы регулярное выражение или возможно ассемблерный код.

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

0
ответ дан PhilT 23 May 2017 в 11:44
поделиться

Только вставьте комментарии, когда Вы абсолютно должны, когда не ясно, почему код делает то, что это делает.

, например, Если у Вас есть комментарий выше дюжины строк кода тогда просто, осуществляют рефакторинг в метод с помощью хорошего названия метода или просто добавляют комментарий к aove метод

0
ответ дан Craig Angus 23 May 2017 в 11:44
поделиться
  • 1
    "%zu" для size_t и "%zd" для ssize_t, я предполагаю;) – ony 26 May 2013 в 07:31

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

12
ответ дан James Curran 23 May 2017 в 11:44
поделиться

Мое мнение:

я не был бы. В методе/имени класса должно быть сказано, что он делает. Если это не делает, или метод или класс пытаются сделать слишком много, или это называют плохо.

я - поклонник комментария почему, не что. Если не ясно, почему код использует один подход по другому, прокомментируйте его. Если необходимо было добавить неиспользуемую переменную взлома, чтобы обойти ошибку компилятора, прокомментировать почему. Но комментарии как "//Подключение к базе данных" являются знаками плохого кода или плохих политик. Метод под названием ConnectToDatabase () намного лучше. И если это имеет "//, Определяют IP сервера БД" в нем, возможно, который должен быть вытащен к методу, названному "DetermineDbServerIPAddress ()".

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

30
ответ дан Philip Rieck 23 May 2017 в 11:44
поделиться

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

6
ответ дан Kena 23 May 2017 в 11:44
поделиться
  • 1
    Обратите внимание, что win64 является системой, где size_t более широк, чем длинное. – Chris Jefferson 28 February 2010 в 22:26

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

Программисты почти никогда не заставляют достаточно времени делать симпатичное задание. Кажется, что мы всегда находимся в безрассудном стремлении заставить что-то к модульному тесту видеть, собирается ли это начать выкладывать результаты. Таким образом, мой окончательный ответ должен был бы найти рабочее место, которое имеет атмосферу, которая позволяет среднему программисту иметь время по качеству. Меня, я подал заявку с Google дважды и был отклонен дважды.

0
ответ дан mea 23 May 2017 в 11:44
поделиться

@James Curran I 100% соглашаются! Я могу считать Ваш код и выяснить то, что Вы сказали компилятору делать; но это не означает, что было Ваше намерение заставить компилятор сделать это. Я знаю, что я не достаточно высокомерный программист, чтобы полагать, что каждый раз я пишу код, он делает точно, что я пытался заставить его сделать. Кроме того, я часто нахожу, что это помогает мне зафиксировать глупые логические ошибки в своем коде путем прохождения через после того, как я записал его и пытающийся объяснить, что я намеревался для кода сделать.

1
ответ дан Timothy Carter 23 May 2017 в 11:44
поделиться
  • 1
    @ony да, я думаю it' s %zu здесь (отредактировал мой ответ). It' s немного сбивающий с толку, потому что код умножает со знаком int с неподписанным size_t, результатом которого должен быть тип беззнаковых целых чисел. – wds 30 May 2013 в 07:41

Возможно, это - просто что-то, что должно быть извлечено из опыта; а именно, опыт возвращения к Вашему собственному коду после шести месяцев и попытки разработать то что, черт возьми, Вы думали (или что Вы шли), когда Вы записали его. Это, конечно, убедило меня, что комментарии не были такой плохой идеей.

17
ответ дан Jason Etheridge 23 May 2017 в 11:44
поделиться

Я не придирчив в Вас, но необходимо ли перефразировать вопрос быть , Как Вы убеждаете других разработчиков работать командой?

Серьезно, некоторые люди предполагают, что можно прочитать их мысли.

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

6
ответ дан Robert Paulson 23 May 2017 в 11:44
поделиться

Покажите им их собственный код от 6 месяцев назад. Если они не могут понять и обрисовать в общих чертах точно, что это делает в течение 2 - 4 минут, Ваше мнение было, вероятно, высказано.

30
ответ дан Max Cantor 23 May 2017 в 11:44
поделиться
  • 1
    если я даю потребность предоставить доступ к клиентам в моей подсети, я должен сделать что-то вроде этого правильно - > мой IP 172.17.163.108, и моя маска подсети 255.255.128.0, таким образом, я должен добавить в строке как host< tab> all< tab> all< tab> 172.17.128.0/17< tab> доверительное право? – goh 3 June 2010 в 09:34

Ну, всегда существует, "если Вы не прокомментируете свой код, мы найдем кого-то еще, кто прокомментирует их" подход.

более мягко, скажите им, что они очень подводят команду, если они не документируют и комментируют, что они делают. Код НЕ принадлежит человеку, если они не полные одинокие волки. Именно команде, группе, быть ли компанией или сообществом.

1
ответ дан 2 revs 23 May 2017 в 11:44
поделиться

Сделайте, чтобы они использовали незнакомый API, но сделали, программирование в не-Интернете подключило машину (если можно найти их в эти дни) так, чтобы у них не было доступа к документации API. Это эффективно, что они вынуждают других разработчиков сделать, если они пытаются использовать код non-documenters!

2
ответ дан cdeszaq 23 May 2017 в 11:44
поделиться

Зависит от того, сколько власти Вы имеете...

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

Замечательно это было популярно у разработчиков, даже при том, что это звучит диккенсовским. Две вещи произошли. Во-первых, люди начали комментировать свой код. Во-вторых, плохо прокомментированный код стал знаком, что разработчик не вполне понял то, что они записали (иначе, они опишут его).

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

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

3
ответ дан Simon 23 May 2017 в 11:44
поделиться
  • 1
    Если Вы используете WinMerge для нескольких избранных расширений, можно зарегистрировать его для просто тех расширение с помощью [шаблоны слияния] раздел. Поочередно можно отобразить unmergeable двоичные расширения " internal:fail" быть вынужденным выбрать один или другой. – Ry4an Brase 17 January 2010 в 04:14

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

class User {
    getUserName() { /* code here */ }
}

Какой смысл того, чтобы добавить функциональный заголовок к вышеупомянутой части кода? Что еще Вы собирающийся говорить, что лучшие друзья "получают имя пользователя". Не весь код должен быть прокомментирован. Мое эмпирическое правило: пропустите комментарии, если Вы не добавляете полезной информации, которую не делает функциональная подпись.

3
ответ дан Rontologist 23 May 2017 в 11:44
поделиться

Комментарии должны быть полными, записаны на уровне намерения (почему не как), и редкий.

При записи кода я склонен комментировать обоснованно в большой степени как само собой разумеющееся. Затем я возвращаюсь через и пытаюсь удалить как можно больше комментариев, не уменьшая понятность кода.> 80% времени это столь же легко как извлечение хорошо именованного метода, это обычно приводит к комментарию, который просто копирует информацию в самом коде. Кроме того, если существует раздел кода, которому "нужен" комментарий, я ищу способы упростить его или сделать его более ясным.

Код должен самодокументировать, и с правильные методы , можно получить 95% пути там довольно легко. Обычно я полагаю, что он отказ, если существуют какие-либо комментарии, остающиеся на коде, в котором я регистрируюсь.

3
ответ дан Wedge 23 May 2017 в 11:44
поделиться
  • 1
    Спасибо, пожалейте тот WinMerge, не может объединиться, двоичные файлы (На самом деле может только визуальные различные различные двоичные файлы с xdocdiff плагином). – Gianluca Bargelli 16 January 2010 в 10:34

Также необходимо дифференцировать два различных комментария здесь:

  • комментарии API (javadoc или другой подобный вид документации): можно попросить их к , используют их собственный код в предельном сценарии (граничные условия как несуществующие объекты или пустые строки или...) и видят, удается ли им на самом деле помнить то, что делает их собственные функции в тех, случаются
    (Именно поэтому, я для полный javadoc включая предельное значение )

  • Внутренние комментарии (в исходном коде): можно попросить, чтобы они объяснили любую функцию, они кодировали, просто выбирают функцию с действительно высокий цикломатический уровень сложности и видят, что они борются вокруг всех различных рабочих процессов кода и ветвления решения;)

2
ответ дан 2 revs 23 May 2017 в 11:44
поделиться

Подать пример. Разработчиков легко колеблют, когда они видят Правильную Вещь, так видя, что твердые методы в действии могут поощрить их делать то же. Кроме того, Вы могли поощрить свою группу принимать метрики кода что пригодность для обслуживания адресного кода и комментарии. Например, Анализ кода произведет ошибку для методов без сводной документации.

3
ответ дан Gabriel Isenberg 23 May 2017 в 11:44
поделиться
  • 1
    хм я получил его. школа не позволяет клиенту клиентским беспроводным соединениям – goh 4 June 2010 в 06:31
Другие вопросы по тегам:

Похожие вопросы: