# Правильный выбор имени переменной
Правильный выбор имени переменной -- одна из самых важных и сложных вещей в программировании, которая отличает начинающего от гуру.
[cut]
Дело в том, что большинство времени мы тратим не на изначальное написание кода, а на его развитие.
Возможно, эти слова не очевидны, если вы пока что ничего большого не писали или пишете код "только для чтения" (написал 5 строк, отдал заказчику и забыл). Но чем более серьёзные проекты вы будете делать, тем более актуальны они будут для вас.
Что такое это "развитие"? Это когда я вчера написал код, а сегодня (или спустя неделю) прихожу и хочу его поменять. Например, вывести сообщение не так, а эдак... Обработать товары по-другому, добавить функционал.. А где у меня там сообщение хранится? А где товар?...
**Гораздо проще найти нужные данные, если они правильно помечены, то есть когда переменная названа *правильно*.**
- **Правило 1.**
**Никакого транслита. Только английский.**
Неприемлемы:
```js
var moiTovari;
var cena;
var ssilka;
```
Подойдут:
```js
var myGoods;
var price;
var link;
```
Чем плох транслит?
Во-первых, среди разработчиков всего мира принято использовать английский язык для имён переменных. И если ваш код потом попадёт к кому-то другому, например вы будете в команде больше чем из одного человека, то велик шанс, что транслит ему не понравится.
Во-вторых, русский транслит хуже читается и длиннее, чем названия на английском.
В-третьих, в проектах вы наверняка будете применять библиотеки, написанные другими людьми. Многое уже готово, в распоряжении современного разработчика есть масса инструментов, все они используют названия переменных и функций на английском языке, и вы, конечно, будете их использовать. А от кода, где транслит перемешан с английским -- могут волосы смогут встать дыбом, и не только на голове.
Если вы вдруг не знаете английский -- самое время выучить.
- **Правило 2.**
**Использовать короткие имена только для переменных "местного значения".**
Называть переменные именами, не несущими смысловой нагрузки, например `a`, `e`, `p`, `mg` -- можно только в том случае, если они используются в небольшом фрагменте кода и их применение очевидно.
Вообще же, название переменной должно быть понятным. Иногда для этого нужно использовать несколько слов.
- **Правило 3.**
**Переменные из нескольких слов пишутся `вместеВотТак`.**
Например:
```js
var borderLeftWidth;
```
Этот способ записи называется "верблюжьей нотацией" или, по-английски, "camelCase".
Существует альтернативный стандарт, когда несколько слов пишутся через знак подчеркивания `'_'`:
```js
var border_left_width;
```
Преимущественно в JavaScript используется вариант `borderLeftWidth`, в частности во встроенных языковых и браузерных функциях. Поэтому целесообразно остановиться на нём.
Ещё одна причина выбрать "верблюжью нотацию" -- запись в ней немного короче, чем c подчеркиванием, т.к. не нужно вставлять `'_'`.
- **Правило последнее, главное.**
**Имя переменной должно максимально чётко соответствовать хранимым в ней данным.**
Придумывание таких имен -- одновременно коротких и точных, при которых всегда понятно, что где лежит, приходит с опытом, но только если сознательно стремиться к этому.
Позвольте поделиться одним небольшим секретом, который позволит улучшить ваши названия переменных и сэкономит вам время.
Бывает так, что вы написали код, через некоторое время к нему возвращаетесь, и вам надо что-то поправить. Например, изменить какую-то рамку `border`...
...И вы помните, что переменная, в которой хранится нужное вам значение, называется примерно так: `borderLeftWidth`. Вы ищете ее в коде, не находите, разбираетесь, и обнаруживаете, что на самом деле переменная называлась вот так: `leftBorderWidth`. После чего вносите нужные правки.
**Если вы искали переменную с одним именем, а нашли -- с другим, то самый лучший ход -- это *переименовать* переменную, чтобы имя было тем, которое вы искали.**
То есть, у вас в коде `leftBorderWidth`, а вы ее переименовываете на `borderLeftWidth`.
Зачем? Дело в том, что в следующий раз, когда вы захотите что-то поправить, то вы будете искать по тому же самому имени. Соответственно, это сэкономит вам время.
Кроме того, поскольку именно это имя переменной пришло вам в голову -- скорее всего, оно больше соответствует хранимым там данным, чем то, которое вы придумали изначально. Исключения бывают, но в любом случае -- такое несовпадение -- это повод задуматься.
[summary]
Смысл имени переменной -- это "имя на коробке", по которому мы сможем максимально быстро находить нужные нам данные.
**Не нужно бояться переименовывать переменные, если вы придумали имя получше.**
Современные редакторы позволяют делать это очень удобно и быстро. Это в конечном счете сэкономит вам время.
[/summary]
[warn header="Храните в переменной то, что следует"]
Бывают ленивые программисты, которые, вместо того чтобы объявить новую переменную, используют существующую.
В результате получается, что такая переменная -- как коробка, в которую кидают то одно, то другое, то третье, при этом не меняя название. Что в ней лежит сейчас? А кто его знает.. Нужно подойти, проверить.
Сэкономит такой программист время на объявлении переменной -- потеряет в два раза больше на отладке кода.
**"Лишняя" переменная -- добро, а не зло.**
[/warn]