Включите исполнение JavaScript в браузере, чтобы запустить приложение.
28 окт 2024

Нотации в программировании: правила именования

Хотите писать чистый и понятный код? Узнайте о разных нотациях в программировании, которые помогут вам правильно называть переменные, функции и классы. Разбираемся в венгерской, верблюжьей, змеиной и других нотациях, чтобы сделать ваш код более читабельным.

Соглашения об именах в программировании (naming conventions) необходимы, чтобы писать понятный, читаемый и поддерживаемый код. Также это способствует сотрудничеству разработчиков и уменьшает недопонимание между коллегами, работающими над одним проектом. В статье расскажем, зачем нужны нотации в программировании и подробно разберем самые популярные из них.

  1. Для чего нужны правила именования в программировании?
  2. Нотации в программировании
  3. Верблюжья нотация (сamel case, camelCase)
  4. Нотация Паскаля (Pascal case, PascalCase)
  5. Змеиная нотация (snake case, snake-case)
  6. Шашлычная нотация (kebab case, kebab-case)
  7. Плоская нотация (flat case, flatcase)
  8. Венгерская нотация (Hungarian notation)
  9. Кричащая змеиная нотация (Screaming Snake Case)
  10. Нотации для использования в конкретных случаях

Для чего нужны правила именования в программировании?

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

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

У нотаций есть свои преимущества.

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

Сотрудничество. Многие проекты в программировании часто предполагают сотрудничество нескольких разработчиков. Нотации помогают работать вместе за счет создания общего естественного языка. Когда каждый участник придерживается одних и тех же стандартов, код становится удобнее в сопровождении. Это сокращает время обучения для новых членов команды и сводит к минимуму вероятность ошибок, вызванных неправильной интерпретацией переменных. Соглашения об именах должны быть частью культуры каждой команды, стандартом, а не опцией. 

Работа с ошибками. Когда в базе кода возникают проблемы, способность быстро выявить и устранить ошибку первостепенна. Четкие имена упрощают процесс, позволяя разработчикам быстро определить источник ошибки. Понятные нотации превращают отладку из утомительного поиска в целенаправленное исследование. Так экономятся и время, и ресурсы. 

Нотации в программировании

На протяжении многих лет разработчики использовали разные типы регистров для именования объектов в своем коде. Рассмотрим самые популярные из них.

Верблюжья нотация (сamel case, camelCase)

Верблюжья нотация в программировании (camelCase) часто используется для именования переменных, функций и методов в таких языках программирования, как JavaScript, Java, Python, C#.  Слова здесь соединяются между собой, а каждое слово, кроме первого, пишется с заглавной буквы: firstNumber, itemsCounter.

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

Пример кода:

Method definition (Python) :

def calculateTotalAmount(paymentList):

    totalAmount = 0

    for payment in paymentList:

        totalAmount += payment

    return totalAmount

Нотация Паскаля (Pascal case, PascalCase)

PascalCase отличается от CamelCase одной деталью — все слова начинаются с заглавных букв. Вот несколько примеров использования регистра Pascal:

NumberOfDonuts = 34

FavePhrase = "Hello World"

Пример кода:

Class definition (C#):

public class BankAccount

{

    private string AccountNumber;

    private decimal CurrentBalance;

    public string AccountNumber

    {

        get { return AccountNumber; }

        set { AccountNumber = value; }

    }

    public decimal CurrentBalance

    {

        get { return CurrentBalance; }

        set { CurrentBalance = value; }

    }

}

Змеиная нотация (snake case, snake-case)

Змеиная нотация отделяет каждое слово символом подчеркивания (_). При ее использовании все буквы должны быть строчными. Snake case чаще всего применяют для объявления констант, имен полей базы данных и именования переменных. Этот вид можно использовать и для улучшения читаемости кода в Python, Ruby и SQL.

Пример кода:

Function definition (Ruby):

def calculate_total_amount(payment_list)

    total_amount = 0

    payment_list.each do |payment|

        total_amount += payment

    end

    total_amount

end

Такое именование распространено в языке Python. Есть и другой вариант его написания: ELT_NAME. Вариант ALL_CAPS часто используется для именования констант в PHP и Java.

Шашлычная нотация (kebab case, kebab-case)

Между словами в этой нотации используются дефисы (-) и строчные буквы. Kebab-case часто используется в атрибутах HTML, именах файлов и URL-адресах. Но именование переменных или функций с ее помощью не так распространено в программировании.

Пример кода:

CSS class (CSS):

.header-title {

    font-size: 20px;

    color: #333;

}

Плоская нотация (flat case, flatcase)

В плоской нотации в переменной просто объединяются все слова и буквы. Между ними не остается пробелов. Все символы во flat case пишутся строчными буквами. Пример: Eg: firstname, lastname

Это соглашение применяют не так часто. Оно влияет на читаемость, особенно при объединении нескольких слов.

Венгерская нотация (Hungarian notation)

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

К имени переменной добавляют информацию о ее назначении или типе данных: strUserName (str в начале имени переменной означает, что она должна хранить данные строкового типа). Еще один пример: iAge (i в начале предполагает, что переменная должна содержать целые числа).

Кричащая змеиная нотация (Screaming Snake Case)

SCREAMING_SNAKE_CASE — это соглашение об именах переменных, в котором каждое слово пишется заглавными буквами и разделяется подчеркиванием. Стиль также известен как MACRO_CASE или CONSTANT_CASE.

Пример кода:

Constant declaration (JavaScript):

const MAX_ATTEMPTS = 5;

const PI_VALUE = 3.14159;

const ERROR_MESSAGE = "An error occurred."

Прописные буквы и символы подчеркивания (_) используются в SCREAMING_SNAKE_CASE для разделения слов. Нотация часто применяется для представления констант и глобальных значений, которые не следует изменять в Python, C++ и сценариях оболочки. SCREAMING_SNAKE_CASE подойдет для повышения читаемости кода и обеспечения согласованности. Этот стиль подчеркивает, что определенные значения следует рассматривать как неизменяемые.

Нотации для использования в конкретных случаях

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

Переменные. Это имена или метки значений и объектов. Общие правила для них — они должны быть существительными: пользователь, специалист, результат, игрок. Чаще всего программисты применяют «верблюда» или «змею», в зависимости от языка программирования.

Константы. В некоторых языках программирования константы пишутся полностью с заглавной буквы и со змеиной нотацией. К ним относятся JavaScript, Python и Java. Пример константы: SOME_SPECIAL_VALUE.

Функции. Они необходимы для совершения действий. Поэтому это должны быть глаголы. Обычно функции используют snake case или camel case. Пример функции: sendRequest. Функции, возвращающие логическое значение, принято начинать с предиката. Это похоже на переменные, содержащие логические значения. Пример имени функции, возвращающей логическое значение: isFormatted.

Классы. Это единицы кода, содержащие методы и атрибуты. Правила для классов таковы: чаще всего они используют Pascal case, должны быть существительными (или именными фразами). Например, Player или Specialist.