Порядок слов при именовании переменных

Введение
Если вы не всегда понимаете, в каком порядке в именах переменных следует размещать слова, то данная статья поможет в этом разобраться.
По своему опыту могу сказать, что многие начинающие программисты часто допускают ошибки при именовании переменных, располагая в них слова в нетипичном для англоговорящих людей порядке. Например, "сумма чисел" переводят как sumNumbers, а "количество десятков", как countTens, что является калькой с русского языка, которая не соответствует правилам английской грамматики.
Давайте разбираться, как избегать подобных ошибок, чтобы имена переменных выглядели более естественно. Рассмотрим самые простые случаи.
  1. Имена переменных без предлогов
1
Уточнение (сущ.) + главное слово (сущ.)
Если имя переменной состоит из словосочетания, оба слова которого являются существительными, то для их размещения используется схема "уточнение + главное слово". В этом случае последним идет объект, о котором идет речь, а первым — уточняющее его слово.
Для определения главного слова необходимо задать вопрос (чего?). То слово, от которого задают вопрос, и является главным. Например, сумма (чего?) чисел.
"Сумма" — главное слово, поэтому его необходимо разместить в имени переменной последним. Первым словом идет "чисел", которое уточняет, сумма чего хранится в переменной. В итоге получаем имя numberSum.
Если переменную назвать sumNumbers, то ее можно воспринять как "суммировать числа". Такое имя ассоциируется с действием (именем метода), а не с именем переменной.
Размещать слова в имени следует справа налево от более частных ("сумма") к более общим ("чисел").
Пример:
"десятков ← (чего?) ← количество"
tenCount → уточнение: ten, объект: count

"игры ← (чего?) ← счет"
gameScore → уточнение: game, объект: score

"кофе ← (чего?) ← цена"
coffeePrice → уточнение: coffee, объект: price
Как видите, порядок слов в русском и английском языке отличается.
2
Состояние (прил.) + главное слово (сущ.)
Если имя переменной состоит из словосочетания, состоящего из прилагательного и существительного, то для их размещения используется схема "состояние + главное слово". В этом случае последним идет объект, о котором идет речь, а первым — уточняющее его слово.
Данный вариант именования не отличается от способа из первого раздела. Разница лишь в наличии прилагательного и задаваемом вопросе.
Также определяем главное слово, задавая от него вопрос к прилагательному(какой? какое?). Например, число (какое?) максимальное.
"Максимальное" — состояние числа, а "число" — объект. В итоге получаем имя maxNumber.
В качестве описания состояния часто используются такие слова, как min, total, current, full, original и так далее. В английском они являются прилагательными и размещаются перед существительным.
Пример:
"общее ← (какое?) ← количество"
totalCount → состояние: total, объект: count

"пустой ← (какой?) ← массив"
emptyArray → состояние: empty, объект: array

"исходное ← (какое?) ← число"
originalNumber → состояние: original, объект: число
В этом случае порядок слов в русском и английском языке одинаков.
2. Имена переменных с предлогом of
В именах переменных предлог of используется для явного указания связи между словами. Однако в большинстве случаев следует отдавать предпочтение составным существительным без предлогов, так как они короче, проще для восприятия и содержат только значимые слова.
Почему избегают предлогов?
  • Имена без предлогов короче и лучше читаются
  • Предлоги не добавляют значимой информации, особенно если контекст переменной и так ясен
  • В профессиональном программировании принято избегать предлоги для упрощения кода
Например, переменную, хранящую сумму чисел, можно назвать sumOfNumbers, что дословно переводится как "сумма из чисел". Но в русском языке предлог "из" часто опускают, говоря просто "сумма чисел".
В данном случае of используется для добавления ясности (и так очевидной), что сумма именно чисел, а не чего-то другого.
Пример:
"Высота треугольника" →
triangleHeight предпочтительнее heightOfTriangle

"Количество книг" →
booksCount предпочтительнее countOfBooks

"Список пользователей" →
userList предпочтительнее listOfUsers
Когда использование предлогов оправдано?
  • Если без предлога связь между словами становится неочевидной. Например, sumOfMatrixElements может быть понятнее, чем matrixElementsSum
  • Когда переменные описывают нетривиальные связи, например, rateOfChange (скорость изменения)
Советы по выбору имен:
  • Используйте только значимые слова, которые четко описывают хранимые в переменных данные
  • Не используйте предлог of, если он не добавляет ясности
  • Имена должны быть интуитивно понятны для других разработчиков
3. Имена boolean-переменных
При именовании boolean-переменных используют следующие префиксы:
Рассмотрим далее используемые при именовании переменных схемы размещения слов.
1
Прилагательные (без префикса)
Использовать: когда переменная описывает состояние объекта без дополнительного контекста. Подходит для локальных переменных, где значение очевидно из названия.
boolean active
boolean current
boolean alive

// Читается как "если видимый"
if (visible) { ... }
2
Префикс + прилагательные
Использовать: когда требуется явно задать вопрос о состоянии/возможности объекта. Делает имя более выразительным.
boolean hasChildren
boolean isValid
boolean isAvailable
3
Префикс + прилагательные + существительное
Использовать: для описания свойств сложных объектов, где нужно уточнить, что именно проверяется. Используется, когда одного прилагательного недостаточно для ясности.
boolean isValidEmail
boolean hasEqualDigits
boolean isUniqueNumber
4
Префикс + существительное
Использовать: когда нет подходящего прилагательного, или проверяется наличие/принадлежность объекта. Используется редко.
boolean hasError;
boolean isDigit
boolean hasLicense;
5
Префикс + глагол
Использовать: для проверки возможности выполнения действия.
boolean canExecute;
boolean canDelete;
boolean canUpload;
6
Окончание -ed и -ing
Использовать -ed (причастие прошедшего времени): для описания состояния объекта, которое является результатом действия. При этом -ed делает акцент на результате, а не процессе.
// "Подключен ли?" (состояние после подключения)
boolean isConnected;

// "Отключен ли?"
boolean isDisabled;

// "Зашифрован ли?"
boolean isEncrypted;  
Использовать -ing (причастие настоящего времени): крайне редко — только для описания текущего статуса, но не для действия. Лучше избегать его использование.
// "В процессе ожидания?" (статус)
boolean isPending;
Заключение
Из этой статьи вы узнали про способ определения порядка слов в именах переменных. Освоив предлагаемые техники именования, вы резко повысите качество имен своих переменных, а значит ваш код будет чище и понятнее.
Автор: Чимаев Максим
Оцените статью, если она вам понравилась!