Pull to refresh

Comments 126

В очередной раз просматривая исходники созданные «под виндой» с комментариями на русском… наблюдая «вопросики и ромбики» убеждаюсь, что «проще» утвердить единый формат написания комментариев чем решить вездесущую проблему кодировки+кодироки системы (кодировка файла + кодировка текста, они эмм так не постоянны, хотя мир в utf какой был бы прекрасный...)
Нормальные IDE давно все файлы создают в UTF-8. Но все равно я считаю что комментарии лучше писать по-английски, мало ли кто будет ваш код читать.
Напарница, тоже пишет в нормальной иде которая у нас заведенный мной в компании стандарт phpstorm (как и другие продуктыjetbrains для других языков), но как, то ей «удается»(она в винде я в линухе, в этой связке) — смотрю исходники: кодировка utf8 файла, а комментарии cp1251.
Можно один раз настроить pre-commit hook, который будет давать отлуп неподходящим кодировкам.
а можно писать на английском и прогать под линуксом и utf, да можно. Хорошо когда в таких вопросах исключается человеческий фактор.
Предыдущий оратор и предлагает исключить человеческий фактор. Прикатился коммит в вашу CVS в неверной кодировке — и укатился обратно с вежливой просьбой больше так не делать.
Это к сожалению его не исключает: комментарий в исходном коде может быть в одной (любой по сути) кодировке а файл по всем каноном в utf8.
Так же данный вариант совершенно не решает проблему, если такая ситуация происходит с файлом внешней, например, библиотеки в котором ухитрились «сохранить не корректно» исходники с комментариями не «на английском».
комментарий в исходном коде может быть в одной (любой по сути) кодировке а файл по всем каноном в utf8
Файл не может быть в utf8, если в нём присутствует кириллица в cp1251 (или любой другой текст в однобайтной кодировке с ведущим битом == 1, т.е. этот код символа больше 127) — формат utf8 не позволяет, файл будет «битый», т.е. не «по всем каноном», и это несложно выявить.
Мой тезис: пишешь код с комментариями используй «английские буквы», а лучше английский язык — проблемы решаются сами собой в том числе исключая человеческий фактор. Так же это касается и в принципе кода displayOptions() лучше чем parametriOtobrajeniya() а худшие варианты — это параметрыОтображения(), *такой вариант возможен при использовании utf* или オプションを表示()
Я не смогу описать бизнес-логику (работу алгоритмов) своего приложения на английском — мне не хватит знания языка, к тому же у некоторыx терминов нет простого, понятного и, главное, однозначного перевода на английский. Можно, конечно, тупо переводить промтом пользоваться словариком, но тогда точно такой же словарик понадобится любому программисту, чтобы переводить английские слова обратно.
А почему бы просто не выучить английский?
А почему бы не дочитать мой комментарий до конца? :)
Ничего не надо переводить обратно, надо сразу на английском понимать. Все что вы можете написать на русском, точно так же можно написать и на английском, но не обязательно, что одному слову на русском будет одно слово на английском соответствовать. И наоборот на русском может быть несколько слов, а в английском одно. Однозначность тоже не важна, из контекста обычно понятно. Нужно просто думать на английском, а не переводить и проблем не будет.
А английский стоит выучить в любом случае, в жизни пригодится, и не только в программировании. Проще один раз выучить и всю жизнь пользоваться.
Я когда набором занимался, у нас много хороших программистов отсеивалось именно из-за плохого знания английского. Потому что все общение по работе на нем.
Нужно просто думать на английском, а не переводить и проблем не будет.
Не нужно. Чтобы думать на английском, придётся перевести все бизнес-процессы (в которых на одного программиста приходится несколько сотен непрограммистов) на английский, потому что у некоторых терминов просто нет перевода. А перевод из словарика никто не поймёт без пояснений. И придётся писать глоссарий. Зачем? Ради того, чтобы комментарии в коде были в понятной любому индусу кодировке?

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

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

Я когда набором занимался, у нас много хороших программистов отсеивалось именно из-за плохого знания английского. Потому что все общение по работе на нем.
О себе:
Раньше занимался разработкой мобильных приложений для Американского рынка.
Платформы BREW, Symbian, UIOne. Но это мне не особо нравилось.
Сейчас занимаюсь фрилансом на oDesk'е. В основном Python + Javascript.
Удаленно работаю на MetaWeb (куплен Google'ом) и RockTech
Большой любитель Python и Haskell
С этого и следовало начинать :)
Не сравнивайте свои реалии аутсорсера ориентированного на американский рынок с обычным бизнесом, официальный язык которого — не английский (и не русский, кстати).

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

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

1) Хорошо в этом отношении сделано в интерлингве: все многословные заимствования из иностранных языков закавычиваются.

2) Из хинди-практики: хороший приём интеграции английских глаголов: они используются как герундии, после них «kar» (= англ. «create») — «делай» (типа как в шутке «в американском языке большая часть глаголов начинается с 'get'»).

С такими приёмами вставлять термины на одном языке в документацию на другом будет легче…
Согласен.
Иногда вещь такая сложная, что люди не могут её друг-другу объяснить на родном языку, у доски с мелом, имея на руках подробную документацию на родном языке.
В этом случае нельзя говорить что русский и английский — без разницы.
По умолчанию в PhpStorm иногда стоит System Encoding. А под Windows сами понимаете…
Это зависит от уровня владения языком. Иногда бывают такие комментарии, что лучше бы они были на русском.
UFO just landed and posted this here
Речь именно про иероглифы (не символы, например, latin-1)? Я просто с трудом представляю как так могло выйти.
UFO just landed and posted this here
Да хоть на древнегреческом. ) Через переводчик хотя бы примерно мысль понять можно
UFO just landed and posted this here
А зачем тогда вообще комментарии (по крайней мере, описание функции перед самой функцией), если всё равно смотреть код надо?
Ах, да я забыл заметить, что если даже забыть о кодировке, то все равно придерживаюсь того же мнения что писать комментарии лучше на английском, «международном», языке.
Я лет десять назад наткнулся в чужом коде на комментарий в сломанной кодировке. Комментарий был как раз, где должен был быть. Мне очень хотелось его прочитать. Часа два бился. Потом осенило посмотреть на автора коммита, в котором этот комментарий был добавлен.
Имя Li Xui подсказало мне, что опыты с починкой кодировки можно прекратить.
Лихуй :) Его бы лихо раскусил Google Translate, но тогда его не было.
…Например, человек, который не знает английского. Может быть, он знает немецкий. А может, только русский. Имеет право. Сам-то я вообще переводчик, но это не значит, что все в этом мире обязаны знать английский, а иначе они вообще не люди и моего кода недостойны.
Тут дело не в обязанности. Просто программисты в абсолютном большинстве худо-бедно но английский знают, и разместив код, к примеру, на github комментарии на английском просто увеличат количество людей, которые смогут их понять, разобраться с кодом, и даже принять участие в разработке. Язык относительно простой, как не крути, но это неписанный общепринятый стандарт в среде программистов.
Для себя можно писать как угодно, но если есть вероятность, что ещё кто-то будет его читать, да ещё и с другого континента, то тут просто выбора нет.
Нужно просто заранее определять, кто будет читать. Наверное, в топике больше интересовало использование внутри компании (где, естественно, читать могут и будут, но русскоязычные — кроме кода, отдаваемого наружу). По опыту: немецкообученные программисты часто пишут комментарии в стиле // such much file now we'll changed — что проще оттрассировать в уме программу, чем пытаться понять, что она делает по комментариям.
Нужно просто заранее определять, кто будет читать

А если сразу не определишь, кто будет читать? Может ты писал программу для себя любимого с коментариями на русском, чтоб через годик если что вспомнить, а потом бац — и решил поделиться со всеми :)
И что, часто вы посылаете непонятно кому непонятно что без предварительного редактирования? К тому же, если получателю действительно интересно — он разберётся сам или спросит (и ты получаешь ценный фидбэк). А если спросит, то по крайней мере ты сам можешь разобраться, что тот или иной кусок кода делает и перевести на английский, тогда как с ломаным английским не факт, что сможешь легко вспомнить, что тот или иной пиджин или жаргон означает.

Кстати, я вспомнил, что тут есть ещё один момент: по моему опыту, комментарии на ломаном английском больше подвержены «цифровому гниению». Поскольку никто из поддерживающих программистов толком не понимает фразу, то влезать и править её психологически некомфортно/лень. В результате после нескольких итераций фраза только дезинформирует. Тогда как заметить/понять то, что русскоязычный текст неадекватно описывает реализацию бизнес-процесса — гораздо проще.
Это всё само собой. Меня просто несколько огорчает гегемония английского языка. Есть в этом нечто имперское, несправедливое по отношению ко всем остальным народам мира. Поэтому я стараюсь избегать поддержания такого стандарта, если нет конкретных причин его придерживаться.
Думаю стоило бы учесть тот факт, что проекты бывают русские и зарубежные, было бы интереснее посмотреть как например соотносится написание комментариев на русском и на английском для чисто русских проектов
Zabuli translit.

Хотя я стараюсь писать на английском.
Транслитов много разных. Этот текст я например прочел как «забУли транслит». Тогда как ы я пишу как y
Возможно, что это и было «забули трансліт». На украинском. Но тогда zabuly translit, если по правилам транслитерации. По идее для русского языка тоже должен существовать аналогичный утверждённый стандарт.
Да, отличия от украинской значительные. Особенно передача Е, Ё и Э как E напрягает. Да и Ц как TC странно. Получается «яблоко» надо транслитерировать как «iabloko». Как-то по нашему стандарту «yabloko» привычнее выглядит.
Это была вольная попытка, я транслитом не пользуюсь, а искать ради одного комментария правила транслитерации сильно лень.

Лично я считаю транслитерацию самым худшим вариантом, потому что иностранец не сможет даже гугл транслейтом воспользоваться.
Сможет. Там есть опция «Allow phonetic typing». По крайней мере переводчик с хинди нормально воспринимает болливудский Roman Urdu (в отличие от фиджийского хинди — с ним засада полная), надо только после каждого слова нажимать пробел.
Как же хочется о нём забыть. Вообще.
public string SgenerirovatNovijObectKlasa(int cyfra, string stroka)
{
return «Why so serious?»;
}
Помнится, работал в итальянской компании, где названия классов, объектов и комментарии одного старого проекта изначально писались на итальянском. Больше всего меня «не устраивало» то, что даже самый слабый явер поймет суть простого комментария, написанного на английском, но далеко не всякий инженер поймет смысл итальянского комментария.
Вывод: фиг с ним с языком, оставляйте за собой только легко поддерживаемый код!
No, non abbiamo utilizzato Urdu fortunatamente.
Учитывая почти реверснутую по сравнению с английским итальянскую грамматику, должно выносить мозг…
Мне не было сложно, я знаю румынский, правила граматики очень схожи. Много аналогий, как в русском и украинском, например. К тому же при компании были курсы итальянского: работодатель постарался облегчить взаимодействие основной части компании и нашего филиала.
мое ИМХО, программист должен уметь как минимум на уровне чтения документации знать английский — следовательно, у него не должно возникнуть проблемы написать комментарий на английском, что же его код делает.
Чтение != письмо. Не всегда уровень «свободного чтения технической литературы» позволяет писать коммантарии, за которые не было бы стыдно автору уже в момент написания.
Плюс если есть проблемы с языком, то комментарии будут заведомо менее информативные, чем на родном языке. Т.е и пользы меньше.
Комментарии пишутся не для себя в первую очередь, а для «того парня» который будет потом с этим кодом работать. Вполне возможно, что «тем парнем» будет как раз тот же человек, что писал комменты, а может и нет. И если я, к примеру, напишу очень информативный и подробный комментарий на 文言, то потом его ценность будет намного ниже чем у краткого коммента на английском даже для китайцев.

У меня вот 90% людей это филиппинцы и, кажется, а чего б им не писать комменты на своем «пилипино»? — все одно проект 80% времени крутится среди них? Но уже я не пойму о чем они там пишут (и не приму код), а потом он уйдет куда-то в US или в Индию и там тоже ценность коментов будет равна 0. А потом проект прыгнет в россию и мы опять получим код с бессмысленным набором букв в комментариях. Т.ч. на данный момент, я вижу только одну возможность — писать комменты на английском.
Филиппины — некорректный пример, т.к. тагалог (основной язык Филиппин) долгое время, пока Филиппины были американской колонией не использовался, они разговаривали на английском, в результате в тагалоге отсутствуют слова для предметов и понятий, появившихся в последние лет шестьдесят. Очевидно, сюда попадает всё, связанное с компьютерами.

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

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

</зануда>
На 4 курсе довелось копаться в исходниках, которые писал один одногруппник… Все имена переменных, методов, классов — всё на немецком, плюс комментарии на немецком…
Это где, в России? Или в Германии??
Россия, Санкт-Петербург.
Санкт-Петербург.
Ну логично же — если город называется по-немецки, то и комментарии в нём можно и нужно писать на немецком :)
В городах со старославянскими названиями писать на старославянском?
А за городом вообще не комментировать?
А в городах с названиями неустановленной этимологии?!
Taк?
MeinObjektTyp objekt = new MeinObjektTyp(); 
float alterWert = objekt.gibWert();
objekt.setzeWert(neuerWert);

Вроде да (уже забыл как страшный сон, а все копии исходников удалил, хотя, может осталось кое-где — надо бы посмотреть — если осталось, то приведу пример куска), как-никак Visual Studio позволяет хоть иероглифами писать (юникод же!).
Они, в общем, опциональны. Правда, с этими ae, oe и ue должно нескольок винтажно выглядеть…
Бывает ужаснее :)

ЕСЛИ ДЕНЬНЕДЕЛИ(РАБОЧАЯДАТА) = 6 ТОГДА
    СООБЩИТЬ("СЕГОДНЯ СУББОТА.");
ИНАЧЕЕСЛИ ДЕНЬНЕДЕЛИ(РАБОЧАЯДАТА) = 7 ТОГДА
    СООБЩИТЬ("СЕГОДНЯ ВОСКРЕСЕНЬЕ.");
ИНАЧЕ
    СООБЩИТЬ("СЕГОДНЯ РАБОЧИЙ ДЕНЬ.");
КОНЕЦЕСЛИ;
如果 星期幾的(工作日期) = 6 然後
報告("今天是星期六.");
否則如果 星期幾的(工作日期) = 7 然後
報告("今天是星期天.");
否則
報告("今天天氣.");
結束如果;
Филологичненько и литературненько…
Вот чем непригоден для программирования русский, что в нём нет краткого слова без приставок и суффиксов, аналогичного Wert или value
Не сильно отличается от английского…
Живу в Германии и работаю с немцами… всe пишут комменты на английском :)
Как верно заметил выше fc_arny, что проект может быть и чисто российским — зачем ему камменты на английском? У меня такой проект есть, камменты там на русском, вряд ли кто то из англо-говорящих будет им заниматься.
Даже когда пишу программки для себя, комментарии на английском. И вообще считаю, что в тексте программы не должно быть русского текста даже в строчках. Локализацию делать отдельно надо.
Ну что то я пишу для себя, я вообще не камменчу, а стараюсь писать более понятный код, что бы с первого взгляда можно было понять что и какая функция делает и для чего она там нужна, что бы и без камментов можно было разобраться. Если проект для России — не вижу смысла в агнло-язычных камментах. В лучшем случае его будет поддерживать такой же Ваня, которому русский — родной язык и на нём понятнее и проще. Другое дело что надо следить за кодировками, что бы каракуль не получалось от системы к системе.
Писать понятнее — это да, но иногда получается или просто много блоков в функции и неплохо бы хотя бы одной строчкой откомментить смысловую нагрузку блока, или какая-то константа встретилась (в именованую константу тоже не всегда имеет смысл выносить, проще коммент поставить).

Для меня причины написания на английском языке:
* отсутствие проблем с кодировками
* отсутствие субъективного переключения языков (методы именуются английским ведь, поэтому подсознательно словесное мышление переходит на английскую терминологию)
* не переключать раскладку (сейчас почти не фактор, но пока переключал по Ctrl+Shift по трём языкам, напрягало)
Я уже даже не замечаю смены раскладки по cmd+space :) всё на автомате делается :)
Я использую 3-4 раскладки. Циклическое переключение это ад. Вот когда перешёл на включение нужной раскладки, то да, почти перестало влиять.
Ну да, и программирование для меня не более чем хобби, по этому я конечно от профессионалов в это области отстаю и даю себе «поблажки».
Вместо русского можно было написать — язык страны автора, язык общества — пример — у меня знакомый надцать лет в канаде, английский использует в баре и в такси, весь коллектив русскоязычный, насчет куда направлены проекты — не знаю.
В команде я еще не писал — свои комментарии чаще на русском для себя. Когда работал на серверах без русской локали — писал на английском
я бы с удовольствием писал на английском, но вот как быть с API — у нас заведено на русском, поэтому интерфейсы приходится описывать на русском. Заморочиться и разобраться как в doxygen подключать перевод? лениво =)
а так вообще порой бывает так, что пусть комментарий был бы на китайском, но самое главное, чтобы был!
Поскольку чаще работаю с англоязычными, почти всегда комментарии на английском.
В силу специфики работы приходится писать комментарии исключительно на русском. В личных проектах использую английский.
FxCop + StyleCop. Любые исключения — строго по согласованию. Соответственно только английский.
Пишу на английском. И стараюсь оформить так чтобы комментарии были оформлены в соответствии требованиями Doxygen.
Практически не использую комментарии, так как код хорошо документируется правильным выбором имеён переменных, классов и методов. Ну а эти имена, естественно, на английском.

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

WARN / TODO / NOTE и прочую короткроживующую ерунду на русском.
Воздержался.

Для русских проектов пишу на русском (а не то не всем бывает понятно), для международных — на английском.
В основном на английском. Поскольку код пишется на английском, мысли в голове крутятся тоже на английском. И «переключаться» на русский язык чтобы написать комментарий на русском сильно отвлекает — нужно перефразировать мысль, вспомнить нужные слова на русском, переключить раскладку и тп.
Точно. Погружаясь в иностранный язык, становишься немного шизофреником — отращиваешь в себе субличность, говорящую на этом языке и не сильно связанную с русскоязычной.
Использую английский и для своих поделок, и для программ в институте, вообщем, везде.
UFO just landed and posted this here
А я даже меню в устройствах переключаю на английский. Ибо в английском обозначения короткие и устоявшиеся, а упражняться в филологии вместо получения пользы, да ещё и в стеснённых по времени ситуациях — я не фанат.
UFO just landed and posted this here
Пишу на английском. И код, и комментарии.

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

Мартин Фаулер в книге Рефакторинг отмечает что часто комментарии являются «дезодорантам для дурно пахнущего кода».
Почувствовав потребность написать комментарий, попробуйте сначала изменить структуру кода так,
чтобы любые комментарии стали излишними.

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

Я за самодокументирующийся код.
Комментарии могут не успевать за быстро меняющимся кодом и вводить в заблуждение разработчиков.
ВотЪ! Комментарии — наследие до-рефакторинговой эпохи, когда господствовал принцип «не трогай код, и он не подведёт тебя». В методах на 500 строк без комментариев никак.
У меня немного другой принцип: если то, что делает кусок кода в терминах предметной области не очевидно — нужно написать комментарий в этих самых терминах (и, поскольку русский проект — то на русском).

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

Когда проект большой, а логика сложная, можно отразить в комментарии зачем нужен тот или иной кусок. А можно не отражать — тогда программисту несколько часов придётся искать по коду как используется та или иная переменная, что она точно делает и дважды всё проверить, чтобы убедиться что он не ощибается.
UFO just landed and posted this here
UFO just landed and posted this here
Пишу на русском, стараюсь на английском, но сильно низкий уровень знания языка, и читая что получилось, осознаю что лучше «не выпендриваться».
Строго на ломанном английском.
У нас в комментах помимо текста (оба языка) живут псевдографические рисунки, которые в том же utf-8 намного разнообразнее.
Писать комменты на русском — просто категорически неприемлемо. Ведь нужно там использовать английские слова (назвния переменных), ведь документация и спека на английском, ведь код на «английском»!
Ну вот и отлично: легче визуально разделять.
Подсветка на что дана? :)
А если операторы языка и какие-нибудь идентификаторы внутри комментария?
Пока пишу, могу и на русском себе пометку сделать, а так только английский….
Разрабатывая сайты на русском, для русской аудитории (без каких либо шансов выхода на мировой уровень) и русских же программистов, не вижу смысла оставлять комментарии на английском :) Поэтому на русском. Если понадобится в открытый международный проект коммитить — естественно буду комментировать на английском.
Если заказчик говорит по русски, бизнес-терминология на русском, требования на русском, тп на русском то английские комментарии — это просто тупой выпендреж.

Вообще программисту нужно писать не такой код, который по каким то там критериям считается правильным, а тот который СКОРЕЕ ВСЕГО будет проще сопровождать в будущем. Почему скорее всего — да потому что мы не знаем какие изменения в будущем претерпит наш код.

Для очень большого пласта проектов риски того что с кодом будет работать иностранец значительно ниже того, что будут возникать ежедневные недопонимания при поддержке кода русскоговорящими разработчиками.
Зависит от проекта.
Сейчас в компании много народа не понимает по-русски, поэтому все пишу по-английски. Иногда заглядываю в словарь и считаю такую вот практику прекрасным способом подтягивать язык.
Я именую составляющие по-английски и короткие комментарии тоже делаю по-английски (чтобы не переключаться).
Обстоятельные и информативные комментарии, описывающие суть, как правило, на русском языке.
Комментарии в коде лучше стараться не писать. Эту же информацию надо выразить в именах переменных, методов, классов, тестов и т.д. Комментарий — последнее средство, когда всё остальное не справляется.
Sign up to leave a comment.

Articles