Кириллица в лексемах

Как поступить?


  • Всего проголосовало
    6

damner2

Новичок
Я всегда считал, что использовать в лексемах языков программирования (названиях переменных, констант, функций) что-либо отличное от латинского алфавита, является неправильным. А тут вот понадобилось описать константами роли людей в компании, которые заказчик называет 3-6 буквенными аббревиатурами (например: МОПКУ, ЗНДСРК, НОИО).

Вижу несколько вариантов как поступить:
1. Называть константы на английском, после транслитерации аббревиатуры. (МОПКУ -> MOPKU)
2. Называть константы на английском, после перевода роли на английский язык. (МОПКУ -> SMCS)
3. Называть константы на русском. :)
4. Не использовать константы, а сделать ассоциативный массив с русскими аббревиатурами в качестве ключей и везде передавать строку, а не константу.

У каждого решения вижу минусы :)
Кто, как поступил бы?

PS. Использовал бы примерно так:
PHP:
<?php
class Role {
  const USER = 1;
  const EMPLOYEE = 2;
  const ADMIN = 3;
}
$user = new User();
$user->setRole(Role::EMPLOYEE);
 

fixxxer

К.О.
Партнер клуба
А зачем заказчику смотреть в код? Я бы в коде назвал так, как мне понятно.

Если никак не понятно, а это просто группы, которыми заказчик распоряжается по своему усмотрению - унес бы в базу и сделал бы RBAC или ACL.
 

damner2

Новичок
Заказчик конечно код не будет смотреть :)
Просто, есть желание писать в терминах предметной области, поэтому и возник вариант №3.
Ну база и ACL это вариант №4, тока в нём я написал больше, чем нужно было, нада было просто оставить "Не использовать константы"
 

craz

Нестандартное звание
Пхп вообще можно писать на русском, причем везде.
Когда-то меня это просто ошарашило. На некоторое время появилось отвращение сродни тому которое до сих пор есть к 1С.
 

A1x

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

Gas

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

"На контрактах 8, 9 и 10 взяток за недобор взятки отвечает второй из последовательно завистовавших"

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

fixxxer

К.О.
Партнер клуба
Лапша-код с пачкой ифов? ;)

Если все выделять в методы, названия придумать придется полюбому.
 

Gas

может по одной?
Лапша-код с пачкой ифов?
не, не всё так плохо, больше 50 классов набралось :)
не идеально, конечно, но к ряду условий и методов всё равно нужны коментарии.
Вот простой пример "при контракте 8, 9, 10 и недоборе взяток отвечает второй вистующий". Можно конечно как-то функцию обозвать, но всё равно это название будет не настолько очевидно как комментарий.
В дальнейшем, при поддержке кода хочется его быстро понимать, а не расшифровывать.

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

fixxxer

К.О.
Партнер клуба
Так там "пресетов" конвенций несколько (сочи, ленинградка, ростов...), и любые промежуточные варианты могут быть обговорены. Так что хардкодом не обойдешься, нужны behaviours или типа ;)

Бота, кстати, реально написать только cost based (просчитывать выгодность каждого варианта). На правилах получится лох, ну или правил должно быть просто сумасшедшее количество
 

Gas

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

Умного бота благо писать не надо, а то я сам в преф играть не умею, куда мне ещё и бота )
 

fixxxer

К.О.
Партнер клуба
Дык бота в каком-то смысле написать проще чем самому играть - боту проще держать все "в голове" и считать вероятности )
 

Gas

может по одной?
По идее да, но сам я в него играть не умею (только правила раз 100 прочитал) :) чтоб что-то утверждать.
Хотят меня научить играть, говорят быстро можно научиться если играть на зарплату, после первой проигранной ЗП начинаешь быстро всё усваивать )
 

A1x

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

Вот другое дело для блекджека - там есть какой-то международный стандарт
 

Redjik

Джедай-мастер
не, не всё так плохо, больше 50 классов набралось :)
не идеально, конечно, но к ряду условий и методов всё равно нужны коментарии.
Вот простой пример "при контракте 8, 9, 10 и недоборе взяток отвечает второй вистующий". Можно конечно как-то функцию обозвать, но всё равно это название будет не настолько очевидно как комментарий.
В дальнейшем, при поддержке кода хочется его быстро понимать, а не расшифровывать.

Ещё раз говорю, я сам всегда считал что за коменты на русском нужно бить по рукам. Но в этой ситуации я немного изменил свою точку зрения.
Да и вообще, в сумме коментов в коде к префу я написал столько, сколько суммарно за последние пару лет, кто только понавыдумывал столько правил и конвенций в этой игре )
Через state делал чтоли?
 
Сверху