Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Именование Основы Java

Именование

Представим себе, что программа из прошлого урока выглядит так:

var x = "Father!";
System.out.println(x);
System.out.println(x);

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

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

Существует общепринятое правило: не используйте транслит для имен, только английский язык. Если вы испытываете сложности с английским, то пользуйтесь переводчиком. Со временем, копаясь в чужом коде, вы сформируете правильные понятия для именования.

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

Именование переменных

greeting — пример простого имени, но не все имена так просты. Довольно часто они составные, то есть включают в себя несколько слов. Например, «имя пользователя». В разных языках применяются разные стили кодирования, и имя переменной будет отличаться.

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

  • kebab-case — составные части переменной разделяются дефисом (my-super-var)
  • snake_case — для разделения используется подчеркивание (my_super_var)
  • CamelCase — каждое слово в переменной пишется с заглавной буквы (MySuperVar)
  • lowerCamelCase — каждое слово в переменной пишется с заглавной буквы, кроме первого (mySuperVar)

В Java используется CamelCase и его вариация lowerCamelCase, при котором первая буква первого слова — строчная.

Именно lowerCamelCase применяется для переменных. Это значит, что имена соединяются друг с другом, при этом все имена кроме первого становятся с заглавной буквы: userName. С тремя словами это выглядит так: mySuperVariable.

Посмотрим, как это выглядит в коде:

var firstName = "John";
System.out.println(firstName); // => John

var playerNumber = 24;
System.out.println(playerNumber); // => 24

Магические числа

Вспомним один из прошлых уроков:

// Перевод евро в рубли через доллары
var euros = 1000;
var dollars = euros * 1.25; // 1250
var rubles = dollars * 60; // 75000
System.out.println(rubles); // => 75000

С точки зрения профессиональной разработки, такой код «пахнет». Так описывают код, который не соответствует так называемым лучшим практикам (best practices). И причина здесь вот в чем: уже сейчас, глядя на числа 60 и 1.25, вы скорее всего задаетесь вопросом: «что это за числа?».

А представьте, что будет через месяц! А как его поймет новый программист, не видевший код ранее? В нашем примере контекст восстанавливается благодаря грамотному именованию. Но в реальной жизни код значительно сложнее, и поэтому догадаться до смысла чисел зачастую невозможно.

Этот эффект вызывают магические числа (magic numbers) — числа, происхождение которых невозможно понять без глубокого знания происходящего внутри участка кода.

Выход из ситуации прост: достаточно создать переменные с правильными именами, как все встанет на свои места:

var dollarsInEuro = 1.25;
var roublesInDollar = 60;

var euros = 1000;
var dollars = euros * dollarsInEuro; // 1250
var rubles = dollars * roublesInDollar; // 75000
System.out.println(rubles); // => 75000

Обратите внимание на следующие детали:

  • Мы использовали именование lowerCamelCase
  • Две новые переменные отделены от последующих вычислений пустой строчкой. Эти переменные имеют смысл и без вычислений, поэтому такое отделение уместно, оно повышает читаемость
  • Получился хорошо именованный и структурированный код, но он длиннее прошлой версии. Так часто бывает, и это нормально, потому что код должен быть читабельным

Дополнительные материалы

  1. Именование в программировании

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Открыть доступ

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

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

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

Иконка программы Java-разработчик
Профессия
с нуля
Разработка приложений на языке Java
2 февраля 10 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»