Представим себе, что программа из прошлого урока выглядит так:
let x = 'Father!'
console.log(x)
console.log(x)
Она по-прежнему работает, но в ней изменилось имя переменной на x
. Компьютеру без разницы, как мы называем переменные, это бездушная машина, но вот программистам — нет. Мы гораздо чаще читаем код, чем пишем. Причем не свой, а написанный другими людьми. От качества и понятности имен переменных зависит половина успеха в анализе кода.
Лучше посидеть и придумать название, которое описывает суть, смысл переменной, чем назвать ее как попало, а в будущем переделывать. Постарайтесь давать им такие имена, чтобы они были максимально понятны без контекста, без изучения окружающего кода.
Существует общепринятое правило: не используйте транслит для имен, только английский язык. Если вы испытываете сложности с английским, то пользуйтесь переводчиком. Со временем, копаясь в чужом коде, вы сформируете правильные понятия для именования.
Среди разработчиков есть шутка: «самое сложное в программировании — названия переменных и инвалидация кеша». Придумывать названия и правда сложно. Как бы вы назвали переменную, в которой хранится количество неоплаченных заказов от клиентов, имеющих задолженность в предыдущем квартале?
Самопроверка. Придумайте название для переменной, в которой будет храниться «количество братьев и сестёр короля». Запишите его в блокноте или отправьте себе на почту. Не указывайте там ничего, кроме названия переменной. А через несколько уроков мы вернёмся к этой теме ;-)
Стили именования
greeting
— пример простого имени, но не все имена так просты. Довольно часто они составные, то есть включают в себя несколько слов. Например, «имя пользователя». В разных языках применяются разные стили кодирования, и имя переменной будет отличаться.
В именовании переменных можно выделить четыре основных подхода, которые иногда комбинируют друг с другом. Все эти подходы проявляют себя, когда имя переменной состоит из нескольких слов:
- kebab-case — составные части переменной разделяются дефисом. Например:
my-super-var
. - snake_case — для разделения используется подчеркивание. Например:
my_super_var
. - CamelCase — каждое слово в переменной пишется с заглавной буквы. Например:
MySuperVar
. - lowerCamelCase — каждое слово в переменной пишется с заглавной буквы, кроме первого. Например:
mySuperVar
.
В Javascript используется CamelCase и его вариация lowerCamelCase, при котором первая буква первого слова — строчная. Именно lowerCamelCase применяется для переменных. Это значит, что имена соединяются друг с другом, при этом все имена кроме первого становятся с заглавной буквы: userName
. С тремя словами это выглядит так: mySuperVariable
.
Магические числа
Вспомним один из прошлых уроков:
let dollarsCount = 50 * 1.25 // 62.5
let rublesCount = dollarsCount * 60 // 3750
console.log(rublesCount)
С точки зрения профессиональной разработки, такой код «пахнет». Так описывают код, который сложен для понимания. И причина здесь вот в чем: уже сейчас, глядя на число 60
и 1.25
, можно задаться вопросом: «что это за числа?». А представьте, что будет через месяц! А как его поймет новый программист, не видевший код ранее? В нашем примере контекст восстанавливается благодаря грамотному именованию, но в реальной жизни код значительно сложнее, и догадаться до смысла чисел зачастую невозможно.
Этот «запах» называют Magic Numbers (магические числа). Числа, происхождение которых невозможно понять без глубокого знания происходящего внутри данного участка кода.
Выход из ситуации прост: достаточно создать переменные с правильными именами, как все встанет на свои места.
let dollarsPerEuro = 1.25
let rublesPerDollar = 60
let dollarsCount = 50 * dollarsPerEuro // 62.5
let rublesCount = dollarsCount * rublesPerDollar // 3750
console.log(rublesCount)
Обратите внимание на следующие детали:
- Именование lowerCamelCase.
- Две новые переменные отделены от последующих вычислений пустой строчкой. Эти переменные имеют смысл и без вычислений, поэтому такое отделение уместно, оно повышает читаемость.
- Получился хорошо именованный и структурированный код, но он длиннее прошлой версии. Так часто бывает, и это нормально. Код должен быть читабельным.