Стили именования: camelCase, snake_case, kebab-case

Тема дорожной карты · Английский для IT

🔊 Словарь терминов с произношением →

Стили именования — это соглашения о том, как соединять слова в идентификаторе, и у каждого есть общепринятое английское название, которое нужно знать, чтобы понимать style guide и обсуждать код. camelCase — первое слово строчными, каждое следующее с заглавной: userName; название от «горбов верблюда». PascalCase (или UpperCamelCase) — все слова с заглавной: UserName, стандарт для классов и типов. snake_case — строчные через подчёркивание: user_name, стандарт Python и SQL. SCREAMING_SNAKE_CASE (CONSTANT_CASE, UPPER_SNAKE_CASE) — заглавные через подчёркивание: MAX_RETRIES, для констант и переменных окружения. kebab-case (dash-case, lisp-case) — строчные через дефис: user-name, стандарт для CSS-классов, URL, имён Kubernetes-ресурсов и опций CLI. Реже встречаются Train-Case (User-Name, заголовки HTTP), dot.case (user.name, ключи конфигов) и flatcase (username, пакеты Python).

Как произносится

Camel /ˈkæməl/ («кэмел», ударение на первый слог), Pascal /pæˈskæl/ (ударение на второй слог, как у французского имени), snake /sneɪk/, kebab /kɪˈbæb/ в британском и /kəˈbɑːb/ в американском варианте (ударение на второй слог, не «кЕбаб»), screaming /ˈskriːmɪŋ/, case /keɪs/ в значении «регистр»; отсюда же uppercase /ˈʌpərkeɪs/, lowercase /ˈloʊərkeɪs/, capitalize /ˈkæpɪtəlaɪz/ («сделать первую букву заглавной»), case-sensitive /ˌkeɪs ˈsɛnsɪtɪv/ («чувствительный к регистру»).

Как употребляется

Как о стилях говорят на ревью и в документации:

  • Use camelCase for variables and PascalCase for components. — Переменные в camelCase, компоненты в PascalCase.
  • Constants should be SCREAMING_SNAKE_CASE. — Константы заглавными через подчёркивание.
  • Kubernetes resource names must be kebab-case. — Имена ресурсов только через дефис.
  • Go uses MixedCaps, not underscores. — В Go принят MixedCaps (так в Go называют camelCase и PascalCase), без подчёркиваний.
  • Python's PEP 8 wants snake_case for functions. — PEP 8 требует snake_case для функций.
  • Is the header case-insensitive? — Заголовок нечувствителен к регистру?

Диктовка идентификатора: getUserById — get user by id, camel case или по буквам с указанием регистра: lowercase g-e-t, capital U-s-e-r, capital B-y, capital I-d. Второй вариант длиннее, но исключает ошибки.

Ловушки

Первая ловушка — русские кальки: «верблюжий регистр» и «змеиный регистр» встречаются в переводах, но на ревью звучат странно; используйте английские названия как есть. Вторая — путать capitalize и uppercase: capitalize делает заглавной только первую букву (User), uppercase — все (USER). Третья — говорить big letters и small letters: носители скажут uppercase и lowercase, а capital letter только про одну заглавную. Четвёртая — считать, что стиль это вкусовщина: в каждой экосистеме он закреплён линтером, и предложение переименовать user_id в userId в Python-проекте вызовет вопросы к автору. Пятая — дефис и подчёркивание на слух похожи; при диктовке говорите hyphen или dash и underscore явно.

Связанные понятия

Полезные ресурсы