alltools.one
Programming
2026-02-25
9 min
alltools.one Team
naming-conventionsprogrammingcamelcasesnake-casecoding-style

Соглашения об именовании в программировании — camelCase, snake_case и далее

Вы впервые открываете кодовую базу и видите getUserName, get_user_name и GetUserName в одном и том же файле. Сразу понятно, что что-то пошло не так. Соглашения об именовании — это одна из тех вещей, которые кажутся тривиальными, пока вы не начнёте работать в команде — тогда они становятся необходимыми.

Единообразное именование — это не вопрос личных предпочтений. Это способ сделать код читаемым для следующего человека, который к нему прикоснётся, а это часто вы сами через шесть месяцев.

Почему соглашения об именовании важны

Три вещи разрушаются, когда в проекте нет единообразного именования:

  • Читаемость страдает — Когда стили переменных меняются каждые несколько строк, ваш мозг тратит циклы на разбор формата вместо понимания логики
  • Командная работа распадается — Pull request-ы превращаются в поля битвы за стиль вместо содержания. Адаптация новых разработчиков занимает больше времени, потому что нет предсказуемого паттерна
  • Инструменты перестают работать правильно — Линтеры, автодополнение, генераторы кода и инструменты рефакторинга зависят от предсказуемых паттернов именования

Какое соглашение вы выберете — гораздо менее важно, чем выбрать одно и придерживаться его. Кодовая база с единообразным snake_case повсюду бесконечно лучше, чем та, где смешаны три разных стиля.

Полное руководство по соглашениям об именовании

camelCase

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

// JavaScript / TypeScript
const userName = "Alice";
let itemCount = 42;
function getUserProfile(userId) {
  return fetchData(`/users/${userId}`);
}

Где используется: JavaScript, TypeScript и Java используют camelCase для переменных, имён функций и методов. Это также стандарт в Swift для локальных переменных и параметров функций.

PascalCase

Каждое слово начинается с заглавной буквы. Также называется UpperCamelCase.

// TypeScript / C#
class UserProfile {
  firstName: string;
  lastName: string;
}

interface DatabaseConnection {
  host: string;
  port: number;
}

// React компонент
function NavigationBar({ items }: NavProps) {
  return <nav>{/* ... */}</nav>;
}

Где используется: C# использует PascalCase практически для всего публичного — классов, методов, свойств. TypeScript и JavaScript используют его для классов, интерфейсов, псевдонимов типов и перечислений. React обязывает использовать PascalCase для имён компонентов, потому что JSX должен отличать компоненты от HTML-элементов.

В Go PascalCase имеет особое значение: любой идентификатор, начинающийся с заглавной буквы, является экспортированным (публичным).

snake_case

Все слова строчные, разделённые подчёркиваниями.

# Python
user_name = "Alice"
item_count = 42

def get_user_profile(user_id):
    return fetch_data(f"/users/{user_id}")

class UserProfile:
    def __init__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name

Где используется: Python использует snake_case практически для всего, кроме имён классов. Ruby следует тому же паттерну. Rust использует snake_case для переменных, функций и модулей. Схемы баз данных почти повсеместно используют snake_case для имён таблиц и столбцов.

SCREAMING_SNAKE_CASE

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

// Константы в большинстве языков
const MAX_RETRY_COUNT = 3;
const API_BASE_URL = "https://api.example.com";
const DEFAULT_TIMEOUT_MS = 5000;

Где используется: Почти все языки используют SCREAMING_SNAKE_CASE для констант. Формат полностью заглавными буквами — универсальный сигнал: «не переназначайте это значение».

kebab-case

Всё строчными буквами с дефисами в качестве разделителей.

/* Имена CSS-классов */
.navigation-bar {
  background-color: #1a1a2e;
}

.user-profile-card {
  border-radius: 8px;
}
# Флаги CLI
npm install --save-dev eslint
git commit --no-verify

Где используется: CSS и HTML сильно отдают предпочтение kebab-case. URL-слаги используют его. CLI-инструменты и флаги командной строки следуют ему.

kebab-case нельзя использовать для имён переменных в большинстве языков программирования, потому что дефис интерпретируется как оператор вычитания.

dot.case

Слова разделены точками.

// Имена пакетов Java
package com.example.userservice.controllers;

import org.springframework.boot.SpringApplication;

Где используется: Именование пакетов Java, расширения файлов, ключи свойств конфигурации в Spring Boot и подобных фреймворках.

Title Case

Каждое значимое слово с заглавной буквы. Второстепенные слова вроде «и», «в», «для» остаются строчными.

Где используется: Заголовки UI, названия страниц, пункты меню, разделы документации и имена собственные.

path/case

Слова разделены косыми чертами, следуя соглашениям файловой системы или пространств имён.

Где используется: Пути файловой системы, пути модулей, иерархии пространств имён и структуры маршрутизации URL.

Таблица соглашений по языкам

ЯзыкПеременные / ФункцииКлассы / ТипыКонстантыФайлы
JavaScript / TypeScriptcamelCasePascalCaseSCREAMING_SNAKE_CASEkebab-case или camelCase
Pythonsnake_casePascalCaseSCREAMING_SNAKE_CASEsnake_case
GocamelCase (неэкспортируемый)PascalCase (экспортируемый)PascalCase или ALL_CAPSsnake_case
Rustsnake_casePascalCaseSCREAMING_SNAKE_CASEsnake_case
JavacamelCasePascalCaseSCREAMING_SNAKE_CASEPascalCase
C#camelCase (приватный)PascalCase (публичный)PascalCasePascalCase
Rubysnake_casePascalCaseSCREAMING_SNAKE_CASEsnake_case
CSSkebab-casekebab-case
SQLsnake_case (столбцы)ЗАГЛАВНЫЕ (ключевые слова)snake_case
PHPcamelCasePascalCaseSCREAMING_SNAKE_CASEPascalCase

Распространённые ошибки и как их исправить

1. Смешивание соглашений в одной области видимости

// ❌ Непоследовательно
const user_name = "Alice";
const itemCount = 42;
const MaxRetries = 3;

// ✅ Последовательный camelCase
const userName = "Alice";
const itemCount = 42;
const maxRetries = 3;

2. Использование неправильного соглашения для языка

# ❌ Использование camelCase в Python
def getUserProfile(userId):
    userName = fetchUser(userId)
    return userName

# ✅ Использование snake_case, как ожидает Python
def get_user_profile(user_id):
    user_name = fetch_user(user_id)
    return user_name

3. Аббревиатуры и акронимы

// ❌ Непоследовательная обработка акронимов
const XMLParser = new XmlParser();
const htmlToJSON = convert(HTMLString);

// ✅ Обращаться с акронимами как со словами
const xmlParser = new XmlParser();
const htmlToJson = convert(htmlString);

4. Булевы имена без префиксов is/has/can

// ❌ Неоднозначный булев
const active = true;

// ✅ Чёткое намерение булева
const isActive = true;

Автоматическое преобразование между соглашениями

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

Наш Конвертер регистра строк делает это автоматически. Вставьте любой идентификатор и преобразуйте его между camelCase, PascalCase, snake_case, kebab-case и другими одним кликом.

Дополнительное чтение


Готовы автоматически преобразовывать соглашения об именовании? Попробуйте наш Конвертер регистра строк — вставьте любой идентификатор и преобразуйте его между camelCase, snake_case, PascalCase, kebab-case и другими. Без регистрации, без отправки данных на серверы, полностью бесплатно.

Published on 2026-02-25
Naming Conventions — camelCase, snake_case Guide | alltools.one