Принципы именования сущностей

Переводим термины и придумываем новые, в т.ч. для ЯОС
Ответить
БудДен
Сообщения: 1844
Зарегистрирован: 07.10.18 14:01

Принципы именования сущностей

Сообщение БудДен » 07.05.21 01:05

Предлагается такое:
  • однородные сущности должны грепиться, но не обязательно базовый класс должен грепиться тем же запросом
  • стремимся к размеру не более 40 литер (чтобы хотя бы 3 имени влезало на строку, которая на современном мониторе имеет ширину порядка 120 литер)
  • поиск будет сделан со стеммингом, чтобы имя грепалось, даже если оно поставлено в словоформе.
  • допустимы знаки препинания: ¡¿˛ˉ«» - соответственно, изображают !?,-
  • если смысл - словосочетание, то склоняем
  • часто повторяемые куски можно сокращать, можно обрезать окончание (согласно стеммингу) или использовать аббревиатуры. При обрезании конца слова стараться, чтобы урезанное слово читалось без особой подготовки (сразу думаем о возможных неоднозначностях)
  • ЯП АО является чувствительным к регистру идентификаторов
  • идентификатор может быть словосочетанием. При его чтении он бьётся на слова, с помощью заглавных букв, знаков препинания и символа подчёркивания. Правила, как происходит этот разбиение, кажутся с начала интуитивно понятными, однако для цифр и аббревиатур эти правила весьма нетривиальны. Их необходимость, и сами правила описаны в комментариях в файле ЛексерДляПоискаВФайле.ярм, и там же есть код, который умеет их разбирать. Примеры можно найти в тестах для этого модуля (в конце).
  • первую букву первого слова можно делать большой или маленькой для целей выражения. Например, тип пишется с большой буквы (т.к. это имя собственное), а идентификатор,
  • у объявления сущности, видимой за пределами модуля (а лучше - и у локальной) должен быть доп. атрибут "полное название", в котором все сокращённые слова и аббревиатуры расшифрованы (надо добавить его в компилятор!)
При выборе переводов пытаемся пользоваться уже сложившейся культурой. Достижения культуры собираем в словаре www.semantic-dict.ru . Нужно понимать, что русскоязычных ЯП много, в них принимались разные решения, зачастую конфликтующие между собой. Приоритеты при выборе переводов для ЯОС менялись со временем. Изначально мы пытались придумать переводы, оптимальные для использования, т.е. точные и краткие, даже в тех случаях, когда они не соответствуют ныне принятой терминологии. Теперь мы пытаемся подделаться под КуМир. Это не идеальное решение, поскольку КуМир изначально планировался как маленький язык, а ЯОС - большая система. Однако таковы суровые реалии рынка.

Для перевода мы должны поискать (в порядке убывания приоритета), как это же понятие переведено в:
  • ЯОС
  • Школьная программа по любым предметам, где эта сущность может встретиться
  • КуМир
  • PascalABC
  • 1С:Предприятие
  • Excel/LibreOffice
  • Школьная сборка информатики-XXI
  • Глагол
В этой теме важен только ПОСТ, обсуждения не важны!
Последний раз редактировалось БудДен 19.09.21 21:42, всего редактировалось 6 раз.

БудДен
Сообщения: 1844
Зарегистрирован: 07.10.18 14:01

Re: Принципы именования сущностей

Сообщение БудДен » 02.07.21 09:18

Я вот думаю, не ошибся ли я здесь. Аббревиатуры почему-то мне попадаются редко, а вотСловаС_однобуквеннымиСоюзамиВ_середине - сплошь и рядом, поэтому текст буквально кишит подчёркиваниями. Поэтому возникает мысль, что нужно выделять подчёркиваниями аббревиатуры, а не заглавные буквы. Т.е. будет "ВотСловаСОднобуквеннымиСоюзамиВСередине", но при этом "СпутникИз_СССР". Всё это кажется прекрасным, проблема начинается в тот момент, когда идут две аббревиатуры подряд, слово начинается с аббревиатуры или является аббревиатурой, какое-нибудь ВИ. Что такое "ВИ"? Это "в и" или аббревиатура "ВИ"? Можно попробовать ввести такое правило:
  • аббревиатура должна с одной стороны быть отделена подчёркиванием
  • если слово состоит из одной аббревиатуры, то подчёркивание добавляется сзади
  • если перед аббревиатурой есть что-то ещё, то и перед ней ставится подчёркивание
  • каждое подчёркивание принадлежит только одной аббревиатуре.
Тогда ВИ превращается в ВИ_, а "ВИ СССР" - в ВИ_СССР_, поскольку первое подчёркивание уже занято. Притом СпутникВ_СССР, поскольку Из - не аббревиатура. Для однобуквенных слов неважно, аббревиатура ли это, поэтому они в любом случае не выделяются (хотя вроде ничто не мешает их выделять, если они именно аббревиатуры).

БудДен
Сообщения: 1844
Зарегистрирован: 07.10.18 14:01

Re: Принципы именования сущностей

Сообщение БудДен » 02.07.21 10:17

Мнение Microsoft : сокращения нужно переводить в нижний регистр, за исключением сокращений, состоящих из двух букв. Как при этом решить конфликты, не говорится. Например, что делать, если попадутся подряд однобуквенные слова и сокращения из двух букв? ADCAdapter - это "A DC Adapter" или "AD C adapter"? Возможно, в английском это не может случиться, т.к. у них вроде нет однобуквенных слов, кроме "а". В русском - по-другому: "в ЛА дыра" = "ВЛАДыра" = "ВЛ а дыра".


https://stackoverflow.com/questions/155 ... -camelcase

А вот их правила целиком

В общем, получается такой вариант для русского языка: все аббревиатуры пишутся так же, как и обычные слова, даже двухбуквенные.
Последний раз редактировалось БудДен 02.07.21 10:37, всего редактировалось 1 раз.

БудДен
Сообщения: 1844
Зарегистрирован: 07.10.18 14:01

Re: Принципы именования сущностей

Сообщение БудДен » 02.07.21 10:25

А вот ещё:

https://stackoverflow.com/questions/450 ... g-acronyms
Here's what i like, and this is for Java: classes start with upper-case, fields with lower case, and acronyms do not affect that. That leads to things that look like this,

UrlConnection urlConnection;
The problem is that if you try to apply a rule where you always upper case acronyms, or even the first letter of an acronym irrespective of it being a field or class name, you get strange things like,

URLConnection URLConnection; // huh?
In other words, the field starts with lower case rule contradicts with a hypothetical uppercase acronym rule. You can't apply them both.

Even the Java SDK has examples of both, within a single class name: HttpURLConnection. You'd think it would be either HTTPURLConnection or HttpUrlConnection
Исходя из этой свободы использования заглавной или строчной буквы для различения имени типа от имени переменной, получается, что надо писать СпутникИзСсср. И тогда вообще не нужны подчёркивания, и правило резко упрощается: заглавная буква = новое слово, неважно, аббревиатура или нет.

Остаётся неясным, зачем они оставляют аббревиатуры из двух букв? Ведь вроде бы там возникает ровно та же проблема.

БудДен
Сообщения: 1844
Зарегистрирован: 07.10.18 14:01

Re: Принципы именования сущностей

Сообщение БудДен » 02.07.21 10:28

https://habr.com/ru/post/113044/ - тут переведена статья, в которой дан единственный аргумент за использование подчёркиваний - константы в Си. Но нас это не касается.

БудДен
Сообщения: 1844
Зарегистрирован: 07.10.18 14:01

Re: Принципы именования сущностей

Сообщение БудДен » 02.07.21 14:24

Ого-го! И тут мы упираемся в то, что много слов уже набрано прописными, такие, как ORD, АДРЕС и НУЛЬ.
Последний раз редактировалось БудДен 02.07.21 14:30, всего редактировалось 1 раз.

БудДен
Сообщения: 1844
Зарегистрирован: 07.10.18 14:01

Re: Принципы именования сущностей

Сообщение БудДен » 02.07.21 14:30

Тогда похоже, что так:

* Ю>1 прописных подряд и за ними идёт подчёркивание - то это слово (аббревиатура)
* Ю>1 прописных подряд и за ними строчная - это Ю-1 однобуквенных и слово, начинающееся с последней буквы
* Ю>0 прописных подряд и за ними не буква и не цифра и не знак подчёркивания - тогда из прописных составляется слово. Но и так плохо, АК - это „АК“ = „Автомат Калашникова„" и в то же время - "„а к“ = „а иди ты к...“". Но если мы будем считать такую ситуацию несколькими однобуквенными, то НУЛЬ превратится в „н у л ь“. Опять мы в тупике...

БудДен
Сообщения: 1844
Зарегистрирован: 07.10.18 14:01

Re: Принципы именования сущностей

Сообщение БудДен » 02.07.21 16:25

Вроде так должно сработать.

Знак подчёркивания заменяет пробел. Идентификатор "Послать НУЛЬ к", если НУЛЬ обязательно должен быть с большой буквы, тогда можно записать не как
ПослатьНульК и не как ПослатьНУЛЬК, а ПослатьНУЛЬ_к

Ответить