LINUX.ORG.RU

Идентификаторы, как правильно переводить?

 стиль программирования


0

1

Предположим есть проект с русскоязычными программистами. OpenSource. GPL. Будет публичный.

Как лучше именовать идентификаторы процедур, таблиц, переменных.

  • По-русски. СУБД и язык поддерживают Unicode. Можно писать «SELECT Житель, Город FROM Население», if (РассчитатьНДФЛ(...)) и так далее.
  • Транслитом.
  • Полностью переводить: СтавкаНДС -> VATrate, РассчитатьНДФЛ -> CalculatePersonalTax ...

Как лучше и почему?

★★★★★

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

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

Тем более, что opensource и могут присоединиться иностранцы.

schizoid ★★★
()

По-русски. СУБД и язык поддерживают Unicode. Можно писать «SELECT Житель, Город FROM Население», if (РассчитатьНДФЛ(...)) и так далее.

однозначно нет.

Транслитом.

говнокод

Полностью переводить: СтавкаНДС -> VATrate, РассчитатьНДФЛ -> CalculatePersonalTax ...

this.

arkhnchul ★★
()

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

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

tailgunner ★★★★★
()
Ответ на: комментарий от arkhnchul

Полностью переводить

Тогда как правильно переводить такие вещи как ИНН, ФОМС, Справка КЭК (в смысле http://spravki-v-moskve.ru/kek/kek.html), ОКАТО, ОКОФ, ОКВЭД? Транслитом вроде нельзя, аналогичных сущностей у буржуев нет.

monk ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

можно называть и по-русски.

Целиком по-русски? В UTF? Или транслитом?

Целиком по-русски получаем код типа

if(РассчитанНДФЛ(Физлицо)) {
  fprintf(Журнал, "%s", Сообщение[РассчитанНДФЛ]);
  return;
}

Постоянное переключение рус/eng. Если транслитом, то чуть лучше, но поля с именами типа Otchestvo или Pomeschenie режут глаз очень сильно.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

Целиком по-русски? В UTF? Или транслитом?

Целиком по-русски, в удобном вам Unicode.

Постоянное переключение рус/eng

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

поля с именами типа Otchestvo или Pomeschenie

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

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Если проект будет использоваться только русскими

В том виде как сейчас — только русскими. Но адаптировать достаточно просто: ИНН -> SSN, чуть другие алгоритмы, и всё.

Смысл системы: документооборот + расчётные функции. Может когда-нибудь вырастет в ERP.

monk ★★★★★
() автор топика

Мой бывший начальник в руководстве по стилю писал:

Старайтесь использовать английский язык (про комментарии). Если не знаете английского — пишите на русском. Не используйте транслит — ЭТО ЗА ГРАНЬЮ ДОБРА И ЗЛА

=)

feofan ★★★★★
()
Последнее исправление: feofan (всего исправлений: 1)

Смесь транслита с переводом лучше всего получается

PEDIK_GUN_REACHED_TARGET = 0x1,
PEDIK_TORSO_USED = 0x2,
PEDIK_USE_ARM = 0x4,
anonymous
()
Ответ на: комментарий от tailgunner

команда практически не знает английского

В данном случае считаем, что команда английский знает (кто не знает, тот доучит). Проблема исключительно в Идентификаторы, как правильно переводить? (комментарий) : как переводить те вещи, которых у буржуев нет.

Если брать справочник КЛАДР из налоговой, то имеем поля Name, Region, Code, OCATO, GNINMB — половина перевод, половина транслит.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

как переводить те вещи, которых у буржуев нет.

Ну да, это самый весомый аргумент за русские названия.

tailgunner ★★★★★
()
Ответ на: комментарий от monk

Если брать справочник КЛАДР из налоговой, то имеем поля Name, Region, Code, OCATO, GNINMB — половина перевод, половина транслит.

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

staseg ★★★★★
()
Ответ на: комментарий от staseg

всякие NATO у нас называют НАТО, а не ОСД.

А FBI — ФБР, а не ФБИ. И CIA — ЦРУ.

monk ★★★★★
() автор топика
Ответ на: комментарий от schizoid

к тебе ночью придёт чёрный человек и сделает тебя программистом 1С.

как будто это плохо.

И дело здесь не в каких-то правилах. А в том, что английский язык - де-факто стандарт в мире программирования.

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

Rastafarra ★★★★
()
Ответ на: комментарий от monk

ФИО -> FIO

ФИО — full name.

Отчество -> PatronymicName

Отчество — middlename (слово пишется слитно). Firstname — имя, lastname — фамилия.

Остальное как-то так, да.

А FBI — ФБР, а не ФБИ. И CIA — ЦРУ.

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

staseg ★★★★★
()
Ответ на: комментарий от staseg

Отчество — middlename (слово пишется слитно).

translate.google.ru уверен, что раздельно. То есть «middle name» или MiddleName.

Firstname — имя, lastname — фамилия.

Или Name и Surname. «last name» — тоже раздельно.

P.S. Вот поэтому вариант «полного перевода» слегка опасен. Можно как китайцы сделать название типа «здравоохренительный массаж».

monk ★★★★★
() автор топика
Ответ на: комментарий от staseg

Отчество — middlename

КМК, то, что у них там называют middlename, у нас практически отсутствует. Так же как и наши отчества у них. Так что всё-таки patronymic, если переводить, а не подменять понятия, как душе угодно.

const86 ★★★★★
()
Ответ на: комментарий от monk

Да-да, я лоханулся. Все эти first-middle-last приставки тоже пишутся раздельно.

staseg ★★★★★
()
Ответ на: комментарий от Rastafarra

«выбрать из населения» было бы куда кошернее

К сожалению, в лучшем случае будет «ВЫБРАТЬ житель ИЗ население», а не «ВЫБРАТь жителя ИЗ населения». Или придётся в язык морфологический словарь запихивать. А потом угадывать как он просклоняет слово «оквэд», например.

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

Да ладно. Рапира, глагол, 1С... Не говоря уже о том, что запилить пачку дефайнов в начало и писать

если(РассчитанНДФЛ(Физлицо)) {
  фпечатьф(Журнал, "%s", Сообщение[РассчитанНДФЛ]);
  возврат;
}

можно хоть сейчас.

monk ★★★★★
() автор топика
Ответ на: комментарий от const86

КМК, то, что у них там называют middlename, у нас практически отсутствует. Так же как и наши отчества у них. Так что всё-таки patronymic, если переводить, а не подменять понятия, как душе угодно.

Тоже использовал patronymic, но однажды столкнулся с непониманием тамошнего человека, зачем оно вообще — потому что отчеств у них нет. После объяснения мне рекомендовали использовать middle name. У них наша ФИО принята в последовательности имя-middle-фамилия, если ее придерживаться, получается имя-отчество-фамилия, т.е. получаем понятное и нам «отчество», и им «middle name».

staseg ★★★★★
()
Последнее исправление: staseg (всего исправлений: 1)
Ответ на: комментарий от monk

Ставка НДФЛ -> RateNDFL

Ставка НДС -> RateVAT

Если есть соответствующий английский термин - не коверкай его (VATrate, а не RateVAT).

tailgunner ★★★★★
()

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

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

Deleted
()
Ответ на: комментарий от monk

Тогда как правильно переводить такие вещи как ИНН, ФОМС, Справка КЭК (в смысле http://spravki-v-moskve.ru/kek/kek.html), ОКАТО, ОКОФ, ОКВЭД? Транслитом вроде нельзя, аналогичных сущностей у буржуев нет.

Глоссарий составить. Аналогичных сущностей нет, но перевод для иностранцев скорее всего есть.

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

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

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

Если в БД надо хранить номер/дату справки КЭК, то плагином не получится.

Или, если смотреть с уровня ниже, то можно считать, что все предметные сущности реализованы плагинами.

monk ★★★★★
() автор топика
Ответ на: комментарий от quiet_readonly

Глоссарий составить.

Видимо самый лучший вариант. Если что-то однозначно не переводится, значит термин.

monk ★★★★★
() автор топика
Ответ на: комментарий от staseg

Отчество — middlename

насколько в курсе это не отчество, а второе имя, кличка.

necromant ★★
()

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

necromant ★★
()

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

marvin_yorke ★★★
()
Ответ на: комментарий от schizoid

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

+1 :)

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

Хорошо сказано. Присоединяюсь.

ak380618
()

#3, #2 если перевести сложно.

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

Legioner ★★★★★
()
Ответ на: комментарий от staseg

Отчество — middlename (слово пишется слитно). Firstname — имя, lastname — фамилия.

Увидел в одном проекте и с тех пор так всегда делаю: отчество - fatherName. Не знаю, насколько носителям языка будет понятно, но русским точно понятно и смысл передаёт.

Legioner ★★★★★
()
Ответ на: комментарий от necromant

Смешанный код плох для разбора.

В долгоживущем проекте код набирается один раз, а читается 10 раз. Это раз. Программист обычно тратит довольно мало времени на непосредственно печать кода, поэтому замедление этого процесса незначительно скажется на общем времени разработки, особенно учитывая разного рода autocompletes современных IDE. Это два.

Поэтому аргумент хоть и верен, но его вес невелик.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

В долгоживущем проекте код набирается один раз, а читается 10 раз.

Это для меня является основным аргументом против полного перевода. Так как термины интерфейса и документации (которая на 90% тексты законов) с одной стороны и термины программного кода и БД с другой придётся каждый раз в уме сопоставлять при чтении.

Может вообще именно термины по-русски оставить, а остальное по-английски. Хотя CalculateНДФЛ как название функции... мда.

monk ★★★★★
() автор топика

Несколько дефайнов, и все ключевые слова C++ будут тоже на русском языке. Так будет проще.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.