Скидка до 60% и курс в подарок 2 дня 09 :56 :09 Выбрать курс
Код

Нотации в программировании: верблюд, змея, шашлык и другие

Разные способы соединить слова в одно длинное название — с вариациями и пояснениями.

Иллюстрация: Анастасия Телесницкая для Skillbox

Часто для хорошего имени переменной или метода программистам не хватает одного слова. Например, название метода calculate, конечно, намекает на то, что в нём что-то вычисляется, но что конкретно — непонятно, нужны ещё слова.

Проблема с языками программирования в том, что пробелы в названиях там недопустимы — нельзя назвать метод calculate elephant weight. Поэтому появились многочисленные варианты соединения слов с помощью изменения регистра букв или дописывания символов-разделителей.

Соглашения об именовании переменных, констант и других идентификаторов в программном коде называют нотациями.

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

Camel case, camelCase — верблюжья нотация

Изображение: abbydesign / iStock

Первое слово пишется со строчной буквы, следующие — с заглавной, разделителей между составными частями нет. Торчащие посреди итогового названия заглавные буквы напомнили кому-то горбы верблюда — так возникло название нотации.

Пример

calculateElephantWeight

Используется во многих языках программирования для именования переменных, функций, методов — например, в Java, JavaScript, PHP. В языке Go в camelCase объявляют внутренние поля и методы.

Язык Go вообще чувствителен к именам: от того, с какой буквы, строчной или заглавной, начинается имя переменной, зависит её область видимости — то, какие другие компоненты приложения смогут к этой переменной обратиться.

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

Pascal case, PascalCase — нотация Паскаля

Скриншот: winworldpc.com

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

Пример

CalculateElephantWeight

В таком стиле часто именуют классы (в Java, Python, JavaScript), а в программной платформе .NET — ещё и переменные.

Стиль так называется вовсе не в честь Блеза Паскаля. Pascal case стал известным благодаря одному почти забытому языку Паскаль — в нём так именовались переменные, процедуры и функции.

А вот язык Паскаль, кстати, назван Никлаусом Виртом, его создателем, как раз в честь великого француза.

Иногда Pascal case называют upper camel case или, наоборот, camel case называют low Pascal case.

В XIX веке программирования ещё не было, зато уже были химия и химики. Один из них, некто Берцелиус, предложил в формулах веществ называть химические элементы одной или двумя буквами, а итог записывать в одно слово без пробелов. Причём первые буквы составляющих должны быть заглавными.

Благодаря этому прекрасному человеку мы до сих пор записываем формулу поваренной соли в виде NaCl, а не целиком Sodium Chloride или менее читабельно — NA CL.

Snake case, snake_case — змеиная нотация

Изображение: Rvector / Shutterstock / Skillbox Media

Слова разделяются символами подчёркивания — они как бы ползут по строке, в результате получается дли-и-инное, как змея, название.

Пример

calculate_elephant_weight

Используется, например, в языках Python и Rust для имён переменных и функций.

Если в предыдущем примере заменить все буквы на заглавные, то получится SCREAMING_SNAKE_CASE (кричащая змеиная нотация).

Эту вариацию чаще всего применяют для определения констант — в тех же Python и Rust, Java, PHP и многих других.

Кричащей её назвали, потому что в интернет-переписке переход на капс часто означает повышение градуса беседы и даже крик.

Исследование Бониты Шариф и её коллег по Кентскому университету показало, что имена, разделённые подчёркиваниями, быстрее распознаются. Чтобы это доказать, учёные записывали движения глаз участников эксперимента, пока те читали названия в разных нотациях.

Kebab case, kebab-case — шашлычная нотация

Изображение: Denys/ iStock

В этой нотации слова разделяют символом дефиса. При некоторой доле фантазии можно представить, что слова при этом как бы насаживают на шампур — вот и получается шашлык (kebab).

Пример

calculate-elephant-weight

Примеры использования мы каждый день видим в URL-адресах, ещё kebab-имена дают CSS-стилям и HTML-тегам. В стайлгайде для Angular (фреймворк для веб-разработки) в kebab-нотации рекомендуют называть файлы компонентов, сервисов и других элементов приложения.

Существует kebab-case со всеми заглавными буквами — это SCREAMING-KEBAB-CASE (кричащая шашлычная нотация). Второе название такого стиля — COBOL_CASE, потому что в нём записывают все названия в языке COBOL. Это старый, но очень живучий язык.

Проблема с этой нотацией в том, что знак дефиса можно интерпретировать как минус. Так что, если поставить этот разделитель не там, можно получить весёлые и странные баги.

Train case, Train-Case — поездная нотация

Изображение: ioanmasay / iStock

В Train case каждое слово пишется с заглавной буквы, а сами слова соединяются дефисами. Визуально такая запись напоминает состав из вагонов, которые следуют друг за другом, — отсюда и название.

Пример

Calculate-Elephant-Weight

Чаще всего нотация Train case встречается в HTTP‑заголовках — например, Content-Type, Accept-Language или Cache-Control. Из‑за этой привязки к протоколу стиль также называют HTTP Header Case. Иногда так оформляют и заголовки текстов и имена файлов: например, файл с инструкцией могут назвать Project-Setup-Guide.md, а список изменений — Release-Notes.md.

И ещё один нюанс: Train case легко спутать с kebab-case, ведь структура у них одинаковая — слова разделяются дефисами. Разница только в регистре: в Train case каждое слово пишется с заглавной буквы, а в kebab-case — со строчной.

Интересно, что в HTTP-заголовках такой регистр использовался как традиция. Сам протокол к регистру нечувствителен: сервер одинаково поймёт и Content-Type, и content-type, и CONTENT-TYPE. А вот в новой версии протокола HTTP/2 разработчики пошли ещё дальше и договорились писать имена заголовков только строчными буквами. То есть вместо Content-Type там будет content-type, поэтому поездная нотация с заглавными уже не встречается.

Flat case, flatcase — плоская нотация

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

Пример

calculateelephantweight

Если в этом примере заменить все буквы на заглавные, получится кричащая плоская нотация — UPPERCASE. Правда, используют её редко, поскольку без разделителей длинное слово, набранное заглавными, читать ещё труднее. Поэтому к ней прибегают разве что для записи коротких констант, флагов или небольших аббревиатур — например, PI, MAX, DEBUG, TRUE или EOF.

Переменные, классы и другие элементы программ обычно так не называют: их будет сложно разделить на слова при чтении, особенно если слов больше двух, как в примере. Зато плоская нотация встречается в именах пакетов. В Java, например, можно создать пакет com.example.flatcase.mypackage.

Но чаще всего такого рода длинные надписи мы видим в соцсетях — #этожеобычнаяпрактикадлятегов :)

Hungarian notation — венгерская нотация

Эта нотация стоит особняком: здесь к имени переменной добавляют короткий префикс, который указывает тип или назначение. Сначала идёт строчный префикс, затем — имя с заглавной буквы. Посмотрите несколько примеров:

  • strName — строка (string);
  • iCount — целое число (integer);
  • bIsValid — логическое значение (boolean);
  • fPrice — дробное число (float);
  • chLetter — символ (char);
  • arrUsers — массив (array).

Венгерская нотация стала популярной вместе с Windows API и на волне расцвета C и C++. В то время языки программирования были менее строги к типам, а редакторы кода ещё не умели подсказывать, что за переменная перед вами. Сегодня, когда IDE показывает тип по наведению курсора, такие префиксы выглядят избыточными, поэтому стиль почти не используют. И всё же он не исчез полностью: венгерскую нотацию можно встретить в легаси‑проектах на Win32 API и MFC, в исходниках и документации Microsoft, а также в именах элементов интерфейса вроде btnSave или lblTitle.

А что касается названия, то оно родилось из шутки. Нотацию придумал программист Microsoft Чарльз Симони, венгр по происхождению. Из‑за обилия префиксов код выглядел так, будто написан на незнакомом языке, — коллеги посмеивались, что «это какой-то венгерский». Вот так имя и прижилось.

Как выбрать нотацию

Лучшей нотации на все случаи жизни не существует. Для разных языков программирования есть разные соглашения о наименованиях — это свод правил с рекомендациями, какие имена стоит выбирать для разных элементов программы (переменных, классов, методов и тому подобного). Например, здесь такого рода соглашения для Python, а здесь — для Java.

Обычно разработчики придерживаются этих общепринятых рекомендаций, но никто не запрещает IT-компаниям устанавливать свои правила, если они не противоречат синтаксису языка. В таком случае лучше соблюдать местные соглашения — если, конечно, вы хотите задержаться в этой компании: -)

Иногда стили даже комбинируют. Так появляются смешанные нотации вроде Pascal_Snake_Case (Min_Value) или camel_Snake_Case (min_Value), где заглавные буквы соседствуют с подчёркиваниями. Это экзотика — специально запоминать её не нужно, но, встретив такое в чужом коде, вы уже не удивитесь.

Мы на наших курсах не своевольничаем — учим называть переменные по всем канонам языка: будь то Java, C#, популярный сейчас R или другие из нашего каталога курсов. Бонусом к правилам наименования — навыки программирования на выбранном языке, а потом и помощь в трудоустройстве.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Станьте разработчиком за 13 месяцев
Попробуйте 6 направлений в разработке, пройдите профориентацию и освойте специальность, которая подходит именно вам.
Узнать как
Мечтаете попасть в ИТ?
На курсе Skillbox вы с нуля освоите востребованную профессию разработчика и сможете устроиться на работу сразу после обучения.
Узнать о курсе
Какую ИТ-профессию освоить в 2026 году?
Узнайте на бесплатном курсе Skillbox. Вы попробуете себя в 6 востребованных ИТ-направлениях и выберете специальность, которая подходит именно вам.
Подробнее

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Курс с трудоустройством: «Профессия Разработчик + ИИ» Узнать о курсе
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована