Якою мовою я повинен називати свої бізнес-класи?


29

Я прошу найкращої практики з цим питанням. Це лише питання, якщо компанія-замовник суто національної мови має рідну мову, крім англійської, я думаю.

Якщо у замовника багато в основному дуже доменних (скажімо, німецьких) виразів, змішаних з деякими меншими доменними назвами. Мова наших коментарів до коду, назви класів / методів / змінних - англійська. Ви б перевели всі доменні імена?


11
Англійська. Lingua franca для програмування.
Риг

6
Одним з найбільш складних в повідомленнях про помилки PHP має цікавий поворот на івриті: unexpected T_PAAMAYIM_NEKUDOTAYIM. Побачивши це кілька разів у своєму житті, я не сумніваюся, що варто користуватися англійською мовою.
К.Штефф

3
Чи має будь-який із німецьких доменних виразів нестандартні символи (скажімо, umulauts (sp?))? Якщо ви наймаєте програмістів за межами вашого регіону, вони, можливо, не зможуть знайти клавіатуру з необхідними символами (у мене немає). Так, є способи переключити мову "набраної", але я не хотів би цього клопоту.
Завод-Муза

2
Грецька мова - використання не латинських алфавітів є кращою безпекою роботи, ніж клінгон.
Wyatt Barnett

3
@ X-Zero, виходячи за межі звичайного ASCII, відкриває баночку з хробаками "яке кодування ми використовуємо". Зазвичай вас кусають і більше не ходите туди.

Відповіді:


16

Я працюю в Німеччині і вважаю за краще вибирати англійську.

Іноді, наприклад, для доменних речей, таких як створення модуля для "DATEV" (німецька накладна / програмне забезпечення для виставлення рахунків), я використовую німецькі імена. Деякі німецькі слова неможливо перекласти належним чином, наприклад, "Referenzbuchungsnummer" (ReferenceBookingNum?) Або "Sachkontenlaenge" (..?). Крім того, я думаю, що речі, що стосуються домену, закінчуватимуться жахом обслуговування. Можливо, ви пам'ятаєте, що ReferenceBookingNum стосуватиметься "Referenzbuchungsnummer", але як бути з вашими колегами? Вони повинні вивчити внутрішню документацію щодо іменування, якщо вона існує. Вони не будуть дуже добре знайомі з модулем без власних імен. Це зайва складність, якщо всі інші розробники теж німецькі. Але "CakeFactory" звучить набагато краще, ніж "KeksFabrik";)

Тож все залежить.


2
Ця відповідь найбільше відображає мою особисту думку, прочитавши інші відповіді. Особливо цей момент: "Це зайва складність, якщо всі інші розробники теж німецькі" при перекладі всього.
Zeemee

1
@Mulmoth: "Це зайва складність, якщо всі інші розробники теж німецькі" --- Як ви можете бути впевнені, що через деякий час проект не буде передаватися в інші країни? Як ви можете бути впевнені, що розробник, який не говорить німецькою мовою, в якийсь момент не буде представлений в проект?
Coral Doe

5
@Coral Doe - Я думаю, що новому / іншому / аутсорсинговому розробнику вже доводиться заглиблюватися у бізнес-домен та його конкретні вирази. Так що їм легше відобразити те, що замовник (який тоді ще буде німецькою мовою) відмічає німецькі класи з іменами погано / неправильно перекладених англійських імен.
Zeemee

2
Німецькі «речі», пов’язані з виставленням рахунків / податків, ніколи не будуть передаватися в іноземну країну. В університеті хтось сказав мені, що 85 відсотків усіх книг про оплату податків стосуються німецьких законів і написані німецькою мовою. світової.
lurkerbelow

3
Я погоджуюся, але одна проблема, яка майже завжди трапляється, полягає в тому, що мова, яку розробники використовують, просочується до користувачів та інших зацікавлених сторін. Не як частина інтерфейсу, а як ви говорите про проблемний домен. Це неминуче призведе до плутанини, оскільки не всі так добре володіють англійською мовою, як більшість розробників.
Мілле Бессо

14

Будучи норвежцем, що працює в норвезькій компанії, я називаю свої предмети англійською мовою. Звичайно, деякі слова чи поняття можуть не мати англійського аналога, і в цьому випадку можна стверджувати, що рідне слово може бути використане замість поганої заміни або дослівного перекладу, який не має значення. Звичайно, багато з цих проблем може бути тим, що деякі з нас повинні мати кращий словниковий запас, тому я зазвичай запитую колегу, якщо я не можу придумати гарне англійське ім’я :)

Деякі наші співробітники не є норвезькою, і тому вони пишуть англійською мовою. Можливість наймати програмістів з більшої частини Європи - це добре для економіки, тому моя компанія також отримує з цього користь.

До речі: пам'ятаю, я прочитав джерело Hermes одного разу (реалізація ebXML b2b), і мені було б важко, якби вони написали та коментували на мандаринському.


5
Майже відредагований "коледж" до того, що я припускаю, повинен бути "колегою", але я не був впевнений, чи це було навмисно.
Джейкоб Шоен

Звичайно, я мав на увазі колегу :)
Сільвестер

Of course some words or concepts might not have a English counterpart- Мені завжди цікаво, коли це з'являється у програмуванні, майже як ви, можливо, знаєте модель дизайну, яку не могли б придумати носії англійської мови. У вас є швидкий приклад?
Ізката

5
@Izkata: питання стосувалося бізнес- класів. Вони частіше прив’язані до конкретних країн та правил. Наприклад, якщо закон змушує вас відстежувати місцезнаходження всіх вантажних автомобілів з небезпечними хімічними речовинами, ви можете дуже добре назвати цей клас після цього закону.
MSalters

9

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

Також ви не знаєте, звідки будуть надходити внески та куди пітимуть. Що робити, якщо ви використовуєте зразок із сайту, чи перекладете це? Що робити, якщо продукт розширюється для використання у клієнтів в іншій країні? У випадку, якщо вам потрібно трохи взяти на роботу підрядника / аутсорсинга? Чому обмежуватись одним басейном і не отримувати максимальну відповідність у всьому світі?

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


9

Моєю останньою метою проекту було моделювання комерційної сфери застави та іпотеки. Усі розробники та компанія, над якою працювали, - з Польщі. Ми створили програмне забезпечення відповідно до принципів дизайну, керованого доменом. Ми використовували польські назви для всіх суб’єктів господарювання, і я думаю, що це був дуже вдалий вибір. Я думаю, що нам вдалося уникнути проблем із спілкуванням завдяки такому підходу. Домен бізнесу складався з багатьох термінів, які я навіть польською мовою не знав, не кажучи вже про англійські переклади. Ми використовували лише латинські літери, а всі технічні класи були названі англійською мовою.


4
Це хороший момент: якщо всі знання про домен є місцевою мовою і немає узгоджених англійських імен для концепцій домену, використання місцевої мови може бути хорошою ідеєю.
Йоахім Зауер

7

Зазвичай простіше читати вихідний код, написаний однією мовою. Це для більшості мов програмування означає, що ви повинні писати його англійською мовою.

Однак, існує велика проблема з доменними поняттями, які не легко перекласти на англійську мову. Типовим прикладом є унікальний ідентифікатор, який суспільство дає людині - у США найближчим поняттям є номер соціального страхування, але це не точне відображення. Імена та номери телефонів зазвичай досить добре відображаються.

Я вважаю, що зазвичай потрібно зберігати умови домену, коли точне відображення не доступне англійською мовою, а лише ті, - решту зберігайте англійською. Це призведе до незвичних ідентифікаторів, таких як KommuneImpl, але це має негайне значення для тих, хто знає домен.


2

Проекти з відкритим кодом / міжнародним співтовариством

Спільною мовою проектів з відкритим кодом та міжнародними спільнотами є англійська. Справа в тому, мова сайтів Stack Exchange - англійська. Для широкої доступності для всіх імен коду та об'єктів слід використовувати англійську мову.

Комерційні проекти

Більшість міжнародних програмних фірм наказує код писати англійською мовою. Це найбільший загальний знаменник, тому має сенс використовувати англійську як засіб для створення послідовності.

Багато регіональних програмних фірм пишуть рідною мовою. Не всі дотримуються такого підходу, але це має сенс з їхньої точки зору - вони використовують загальну мову для всіх своїх розробників.

Назви об’єктів бізнесу

Мова кодування команди повинна використовуватися для іменування об'єктів.
Пріоритетним завданням є те, щоб розробники мали змогу спілкуватися один з одним щодо об’єктів та вимог проекту. Якщо команда пише французькою мовою, то бізнес-об’єкти мають бути названі французькою мовою. Якщо вони кодують англійською мовою, то назвіть об'єкти англійською мовою.

Ваше запитання додає зморшок, оскільки клієнт розмовляє рідною мовою, відмінною від мови кодування вашої команди. Вам слід використовувати мову кодування вашої команди для назви об'єктів.
Коли бізнес-аналітикам або розробникам потрібно спілкуватися з клієнтом щодо конкретних бізнес-об'єктів, може знадобитися переклад назви об'єкта з мови кодування на мову клієнта. З мого досвіду, досить рідко я говорив про конкретні кодові об'єкти з клієнтом, тому переклад назад на мову клієнта насправді не потрібен.

Єдиним винятком із правила іменування є те, коли об’єкт не має іншого достатньо стислого терміна, який би захоплював наміри об'єкта. ІМО, це дійсно рідко, але воно може статися. Насправді ж це те саме, що розмовні мови роблять для вираження конкретних понять. " Фасад " спочатку є французьким терміном, але був адаптований англійською мовою, щоб виразити концепцію, і є загальною схемою дизайну. " Schadenfreude " - це ще один хороший приклад запозиченого терміну, хоча я не думаю, що він має відповідний зразок.


1
Ваш останній абзац повністю суперечить вашому першому, схоже
Джеймсу

@James - спасибі! Я видалив цей розділ, оскільки не маю часу наразі уточнити, що я мав на увазі. Це повинно було підтримувати, але не важливо.

1
Категорично не згоден. Оскільки основні поняття практично кожної мови, яку ви зустрінете, написані англійською мовою, використання неанглійської термінології призводить до менш розбірливого вихідного коду. Розуму постійно доводиться стрибати між англійською та іншою мовою. Код повинен бути вільним і читабельним.
Майк Адлер

@MikeAdler - незрозуміло, якщо ви не згодні з тим, що я пропоную, як загальне правило (називайте речі мовою команди) або виняток, що має бути дуже рідкісним.

Здійснено. Я уточню: я не погоджуюся з тим, що будь-який об’єкт колись повинен бути названий мовою, відмінною від англійської. Ваш перший заголовок «Проекти з відкритим кодом / міжнародні спільноти» дуже добре відображає мою точку зору. Все після цього я не купую. Причиною, як зазначалося, є ремонтопридатність, яка повинна бути головним питанням практично для кожного дизайнерського рішення (включаючи схему іменування), яке ви приймаєте, на мій погляд.
Майк Адлер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.