Являются ли комментарии от первого лица отвлекающими и непрофессиональными?

63

Я просто обнаружил, что пишу следующий комментарий в некотором (архаичном Visual Basic 6.0) коде, который я писал:

If WindowState <> 1 Then
    'The form's not minimized, so we can resize it safely
    '...
End if

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

Я могу просто переписать это it can be resizedи избежать этой проблемы, но это пробудило мое любопытство: часто ли используют в комментариях первое лицо, подобное этому, или это считается отвлекающим и / или непрофессиональным?

Dan Rasmussen
источник
1
Комментарии для downvote? Это мой первый вопрос Programmers.SE, и я все еще пытаюсь выяснить, что именно делает хороший вопрос P.SE против хорошего вопроса SO.
dlras2
2
Я не отрицал вас, но мог догадаться, что им не понравился заглавный вопрос, так как ответы на него легко могут быть краткими, болтливыми и слишком чересчур опосредованными. Переписать это, чтобы быть более похожим на ваш последний вопрос, может помочь.
DKnight
56
Мне нравится «мы». Это дружелюбно и инклюзивно.
Джереми
25
Я думаю, что я собираюсь комментировать все исправления ошибок, над которыми я работаю, от третьего лица, всезнающего, должен сделать меня популярным в офисе ... "Мало ли Джон знал, что его плохо разработанное дополнение всегда будет пропускать этот код, оставляя пользователей в недоумении у бесконечно пустого поля отображения ... "
DKnight
4
Это все, что я могу сделать, чтобы мои комментарии не содержали глупых опечаток. Теперь мне нужно беспокоиться о том, следует ли использовать пассивный голос? Затем я должен быть уверен, что не буду болтать никакими предлогами - я полагаю, это то, с чем мои коллеги могут не смириться. И я полагаю, мне никогда не позволят использовать инфинитив с разделением. Фрагменты приговора?
Майкл Берр

Ответы:

103

Комментарии должны быть написаны для понимания людьми. Когда люди общаются, мы обычно используем «я», «мы», «вы» и т. Д.

Когда кто-то пытается понять какой-то код, есть два или более действующих лиц: человек, читающий его, и первоначальный автор кода. Сказать «мы» - это хорошо. Если не сказать «профессионал», вы имеете в виду «роботоподобный».

whatsisname
источник
3
+1, когда вы пишете таким образом, поощряет вас, писателя, рассмотреть потенциального читателя, и это действительно может помочь вам увидеть концепции, которые, возможно, должны быть лучше изложены.
Джастин Омс
64
// we approve of this answer:)
Джаррод Диксон
3
+1 и усиление: наоборот, конструкции с пассивным голосом, такие как «его можно изменить», вообще отвергаются в письменной форме, поскольку нам трудно их понять. Если вы используете пассивный голос, вы заставляете своего читателя придумывать и запоминать тему предложения.
MSW
1
@msw: разве это не должно быть «мы отказываемся от пассивно-голосовых конструкций типа« это можно изменить »...» тогда?
tdammers
2
@msw, на русском языке, например, пассивные голосовые конструкции встречаются чаще и их легче понять из-за некоторых культурных различий. (И нет, я специально не написал это предложение пассивным голосом!)
П Швед
22

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

Мой голос все еще идет для краткости и краткости. Если сообщение может быть передано менее многословно, зачем выбирать что-то еще? Итак, что касается этого примера, я бы написал:

'The form is not minimized so it can be resized safely.
Джонатан Кху
источник
4
«Если сообщение может быть передано менее многословно, зачем выбирать что-то еще?» Как человек, которому приходилось биться головой об стену, пытаясь внедрить чьи-то плохо документированные библиотеки - открытые библиотеки-источники печально известны этим - я говорю, что я бы предпочел иметь слишком много комментариев, чем слишком мало. Я думаю, что согласен с вами, хотя, если вы имеете в виду, используйте хорошие предложения с правильной пунктуацией, которая имеет смысл.
Джонатан Хенсон
3
+1 за то, что не взял на себя всю ответственность в настройках команды. И хотя я согласен с тем, что стараюсь избегать подробных комментариев, иногда пассивное время может быть еще труднее прочитать (как указал jkj) и не менее многословно, и я предпочитаю избегать запутывания. =]
dlras2
2
@ Джонатан Хенсон: Многие комментарии хороши, но только если они содержат много полезной информации. Если один и тот же объем информации можно выразить двумя эквивалентными способами, чем короче, тем лучше.
tdammers
Мой совет - избегать использования пассивного голоса. Это сложнее понять, особенно для не носителей английского языка.
Вилле Лаурикари
18

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

Объясняя такие вещи, как требования или обоснование, я говорю «мы», как у вас там:

// We can't proceed unless the user has given us this information.

Если я объясняю процесс, я склонен использовать императивный (командный) голос (поправьте меня, если это неправильный термин):

// Get the foo from bar and make sure it follows our required format.

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

Tesserex
источник
Это тоже мой стиль. Оба способа, которые вы описываете, имеют свое место.
Зортни
9
У последнего тоже есть «наше». Мне интересно, что люди, естественно, пишут комментарии во множественном числе от первого лица.
Рейд
@ Рейд вау, да, это был просто инстинкт, я даже не заметил. Но он мог бы просто сказать "the".
Tesserex
8

Я думаю, что это просто вариант академического / технического стиля письма, который часто безличен. Используя пассивный голос, используя «королевское мы» («один» так устарел).

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

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

Steve314
источник
3
Я лично не чувствую, что «один» датирован. Да, это менее распространенное использование, потому что это не то, что время от времени используют. Тем не менее, существует почти нулевой шанс того, что использование «одного» в этом смысле комментария будет нечитабельным или иным образом ухудшит юзабилити.
Билли ОНил
7

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

Если вы должны рассказать код, предпочтите императивы, например,

'ensure that the window is not minimized
If WindowState <> 1 Then
    'resize the window
    '...
End if

(И, пожалуйста, не используйте голые константы, такие как «1» в коде)

Стивен А. Лоу
источник
3
+1 за то, что я предпочел императив, я не думал об этом. Кроме того, да, я не должен был использовать голое 1. Я обычно очень хорошо об этом ... Оставьте это мне, чтобы опубликовать один из немногих случаев, когда это проскакивало у меня в Интернете.
dlras2
6

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

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

Пример:

(Вы / мы / должны) использовать делегата для передачи события изменения размера окна родителю

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

Другой пример (обратите внимание, что вы часто можете опустить формы человека в комментариях):

(Мы) поймали исключение. (Мы будем), показывая диалоговое окно с ошибкой.

Возникла исключительная ситуация, и появится диалоговое окно с сообщением об ошибке.

PS. Замена пассивного «вы» в английском языке настолько распространена, что она начала распространяться и на другие языки. Это звучит очень забавно, например, на финском языке, где существует форма единственного лица от второго лица (например, английское «ты»).

jkj
источник
Я думаю, что лингвистически это не правильно. Первый - это императив, у него нет темы. "Пожалуйста, закройте дверь." Хотя это примерно означает то же самое, что и «пожалуйста, можете ли вы закрыть дверь?» это четкая грамматическая форма, а не аббревиатура. Во втором примере вы также можете сказать: «(Это) перехватило исключение. (Это будет), показывающий диалог ошибки».
Инка
3

Если вы говорите о выполнении программы, это не «мы», «вы» или «я». Антропоморфизм может быть настолько широко распространенным, что может быть незаметным, но это опасная привычка (Предупреждение PDF. Предупреждение Dijkstra.):

Я думаю, что антропоморфизм хуже всего. Теперь я видел программы «пытаться что-то делать», «хотеть что-то делать», «верить в то, что это правда», «знать вещи» и т. Д. Не будьте настолько наивными, чтобы полагать, что такое использование языка безвредно. Он предлагает программисту идентифицировать себя с выполнением программы и почти навязывает ему использование операционной семантики.

Jaybee
источник
2
Дейкстра Внимание! Если бы только больше вещей было одно :(
Том Андерсон
Я не думаю, что написание комментариев во множественном числе от первого лица - это антропоморфизм. Я думаю, это подразумевает: «Теперь мы инструктируем компьютер…», как будто программист, пишущий комментарий, ведет читателя через его код.
Блюджей
2

Я не думаю, что ни первое лицо, ни «королевское мы» кажутся непрофессиональными или отвлекающими. Я действительно думаю, что мы должны приложить усилия для написания англоязычных комментариев в E-Prime , подмножестве английского языка, в котором нет глагола «быть».

Если вы чрезмерно используете «быть» в комментариях, вы получите запутанные утверждения, такие как:

// X is 10
// X is the user data of the newly-authenticated user
// X is a BigInt

Ну, может быть, не все сразу, но из-за равенства можно сделать комментарии неясными.

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

Брюс Эдигер
источник
Интересное понятие; как можно выразить понятия «Х должно быть не менее 5» или «У не должно быть больше 23»?
суперкат
@supercat - «Значение X должно иметь значение 5 или больше». «Значение Y не должно превышать 23». Равенство, логическое или арифметическое, также не должно использовать глагол «быть». «X должен содержать 5», или «X оценивает до 5», или «X имеет значение 5» или что-то подобное. Если вы встретите особенно неясный комментарий, ищите глаголы «быть». Могу поспорить, что в неясном комментарии используются глаголы, отмеченные знаком «но». Также обратите внимание, что я написал ответ выше в E-Prime.
Брюс Эдигер
Второй в порядке; первое не так много, так как -6 имеет величину 5 или больше.
суперкат
@supercat - очень хорошо. Msgstr "X должно иметь целое число со знаком 5 или больше". В США мы бы назвали вашу «величину» «абсолютной величиной», что подтверждает мою точку зрения о значении переменной, а не переменной как значения, которая возникает из-за равенства.
Брюс Эдигер
2

Правильный стиль комментирования - безличное третье лицо; « Форма не свернута, поэтому ее можно безопасно изменить ».

  • Я наивна
  • Ты груб.
  • Мы слишком формальны (и королевские).

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

оборота user23157
источник
11
-1 потому что: нет правильного пути, я нахожу ваше резюме I / You / We немного не в курсе, и я не понимаю последнюю часть. В сторону: когда я говорю «мы» в своих комментариях, я не пытаюсь говорить как король - я говорю с вами, парень, читающий мой код и идущий рядом с вами через мои мысли.
двойник
2

Это зависит от комментария.

Как правило, я пишу комментарии в порядке, предложенном «Рот коровы» . Я также всегда пишу комментарии, генерирующие документацию (Doxygen, JavaDoc) таким образом.

Однако многие часто пренебрегают использованием контроля версий, чтобы определить, кто написал / коснулся строк в исходных файлах. Бывают случаи, когда говорить «Я» уместно, особенно когда довольно легко отследить «Я» до человека, написавшего код. Если вы, как частное лицо, приняли решение, я рекомендую использовать «I» (наряду с контролем версий) для выявления и отслеживания решений в соответствии с кодом.

Томас Оуэнс
источник
+1 для Doxygen и JavaDoc. Я согласен, что документация отличается от комментариев (хотя некоторые комментарии генерируют документацию), и я делаю все возможное, чтобы такая документация была более формальной, чем мои комментарии.
dlras2
1

Мой старый добрый отец (Мхрип) спрашивал: «У тебя есть более важные вещи?»

Однако лично мне нравится «мы». И я также задаюсь вопросом, почему я пишу мы в восходящих документах, даже не код, учитывая, что я единственный сотрудник в моей компании.

Впрочем, я и я согласны, что таким образом мы чувствуем себя менее одинокими :)

user18254
источник
1

Я единственный, кто пишет «мы» и думает «я и компьютер» (или «моя команда и компьютер»)? «Мы» собираемся обработать запрос, выданный нам извне, это означает, что «мы» должны прочитать запрос, открыть некоторые окна, выполнить некоторые вычисления, основываясь на «наших» бизнес-требованиях. Это также помогает видеть код как часть вашей стороны, а не врага :-)

Ян Фабри
источник
0

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

//You can get a session_id from SYSSession.getSessionID() if you need one

Более длинные комментарии (например, длинный заголовок функции или несколько строк описания алгоритма) Я стараюсь сохранять нейтральность: нет от первого лица, от второго лица или от третьего лица.

FrustratedWithFormsDesigner
источник
Английский пассивный редко звучит хорошо: «Идентификатор сеанса можно получить из SYSSession.getSessionID (), если он нужен»
jkj
0

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

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

Таким образом, если большинство комментариев можно выразить в коде, это оставляет очень мало причин для комментариев

  • Если ваш комментарий - ваше мнение, тогда начните с «Я»
  • Если вы считаете, что ваш комментарий должен быть общим мнением (например, лучшая практика), тогда начните с «мы»
  • Если ваш комментарий направлен на какой-то изворотливый код, написанный недоумком, то отбросьте комментарий, обойдите и набейте им запутанный код от коллеги, а затем обратитесь к ним лицом к лицу.
Стив Данн
источник
1
Извините, но я совсем не фанат этого стиля. Тем более что этот код используется один раз, в одном месте, и это уже единственная вещь в методе изменения размера. Я бы предпочел, чтобы короткий, хорошо сформулированный комментарий усложнялся рефакторингом, особенно при работе с отладчиком VB6. Как в стороне, CanThisFormBeResizedвероятно , должно быть, ThisFormCanBeResizedесли он будет использоваться как If ThisFormCanBeResized Then.
dlras2
1
Это предпочтение. Я использую приватный логический метод, как и function() { return this.windowState != 1 }любой комментарий. +1 от меня
keppla
1
@ Дан, а что, если кто-то еще придет позже: зачем заставлять его искать и заново выяснять логику, чтобы определить, можно ли свернуть окно? Они могут даже не заметить вашу маленькую строчку кода с комментариями и добавить свои собственные. Теперь у вас есть 2 места, которые нужно изменить в случае изменения логики, и 2 места, где комментарии могут не синхронизироваться с кодом. Почему хорошо названный 1-строчный метод (который не изменяет состояние) добавляет сложности? Это самый простой и один из самых чистых рефакторингов.
Стив Данн
0

Как правило, я бы предложил использовать от первого лица, то есть I.

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

Стивен Бэйли
источник
0

Лично я бы написал (в C #):

if (WindowState != WindowState.Minimised)
{
     ResizeWindowSafely();
}

Или что-то в этом роде, поэтому комментарии не нужны.

Dot Net Pro UK
источник
ResizeWindowSafelyбудет означать, что он может быть вызван, если вы не знаете, следует ли изменить размер или нет, и, следовательно, должен будет включать if (WindowState != WindowState.Minimised)себя.
dlras2