Правильный выбор имени переменной
Материал на этой странице устарел, поэтому скрыт из оглавления сайта.
Более новая информация по этой теме находится на странице https://learn.javascript.ru/variables.
Правильный выбор имени переменной – одна из самых важных и сложных вещей в программировании, которая отличает начинающего от гуру.
Дело в том, что большую часть времени мы тратим не на изначальное написание кода, а на его развитие.
Возможно, эти слова не очевидны, если вы пока что ничего большого не писали или пишете код «только для записи» (write-only, написал 5 строк, отдал заказчику и забыл). Но чем более серьёзные проекты вы будете делать, тем более актуальны они будут для вас.
Что такое это «развитие»? Это когда я вчера написал код, а сегодня (или спустя неделю) прихожу и хочу его поменять. Например, вывести сообщение не так, а эдак… Обработать товары по-другому, добавить функциональность… А где у меня там сообщение хранится? А где товар.
Гораздо проще найти нужные данные, если они правильно помечены, то есть когда переменная названа правильно.
Правила именования
- Правило 1.Никакого транслита. Только английский. Неприемлемы:
var moiTovari; var cena; var ssilka;
var myGoods; var price; var link;
var borderLeftWidth;
Этот способ записи называется «верблюжьей нотацией» или, по-английски, «camelCase». Существует альтернативный стандарт, когда несколько слов пишутся через знак подчёркивания ‘_’ :
var border_left_width;
Позвольте поделиться одним небольшим секретом, который очень прост, но позволит улучшить названия переменных и сэкономит время.
Бывает так, что, написав код, мы через некоторое время к нему возвращаемся, надо что-то поправить. И мы примерно помним, что переменная, в которой хранится нужное вам значение, называется… Ну, скажем, borderLeftWidth . Мы ищем её в коде, не находим, но, разобравшись, обнаруживаем, что на самом деле переменная называлась вот так: leftBorderWidth .
Если мы ищем переменную с одним именем, а находим – с другим, то зачастую самый лучший ход – это переименовать переменную, чтобы имя было тем, которое вы искали.
То есть, в коде leftBorderWidth , а мы её переименуем на ту, которую искали: borderLeftWidth .
Зачем? Дело в том, что в следующий раз, когда вы захотите что-то поправить, то вы будете искать по тому же самому имени. Соответственно, это сэкономит вам время.
Есть причина и поважнее. Поскольку именно это имя переменной пришло в голову – скорее всего, оно больше соответствует хранимым там данным, чем то, которое мы придумали изначально. Исключения бывают, но в любом случае – такое несовпадение – это повод задуматься.
Чтобы удобно переименовывать переменную, нужно использовать хороший редактор JavaScript, тогда этот процесс будет очень простым и быстрым.
Если коротко…
Смысл имени переменной – это «имя на коробке», по которому мы сможем максимально быстро находить нужные нам данные.
Не нужно бояться переименовывать переменные, если вы придумали имя получше.
Современные редакторы позволяют делать это очень удобно и быстро. Это в конечном счёте сэкономит вам время.
Храните в переменной то, что следует
Бывают ленивые программисты, которые, вместо того чтобы объявить новую переменную, используют существующую.
В результате получается, что такая переменная – как коробка, в которую кидают то одно, то другое, то третье, при этом не меняя название. Что в ней лежит сейчас? А кто его знает… Нужно подойти, проверить.
Сэкономит такой программист время на объявлении переменной – потеряет в два раза больше на отладке кода.
«Лишняя» переменная – добро, а не зло.
Понятные названия
Названия должны однозначно говорить о том, зачем нужна сущность: переменная, функция или что-то ещё.
Переменные – это сущности, а их названия – это существительные ( user.level ) или их свойства ( user.is_admin ). Название должно ясно ответить на вопрос «Что хранит переменная?».
Функции что-то делают с переменными, значит их названия – глаголы ( download_report , levelup_user ), и они отвечают на вопрос «Что делает функция?». Ответ должен быть полным, исчерпывающим. Например, недопустима ситуация когда def fetch_page(url) делает что-то неожиданное, не предусмотренное названием: выводит в консоль, вызывает exit(‘Случилась ошибка. Все сломалось’) и прочее.
Названия должны быть:
- понятными: понятно говорить о смысле. Не result , а users_online или json_content .
- точными: переменная user_online не подходит для хранения списка пользователей. Такое название вводит в заблуждение и провоцирует на ошибки в коде. Корректный вариант — users_online .
- полными: никаких r для радиуса Земли или i для элемента списка. В первом случае подойдёт earth_radius , а во втором какой-нибудь user или book , в зависимости от того, что в списке. Длинные названия – не проблема, у всех давно есть автокомплит.
- на английском: никаких kniga или polsovatel . Брр.
- грамотными: не поленись открыть переводчик и гугл, чтобы подобрать правильный перевод. Неправильный перевод создаёт ощущение неряшливости, а может и смыслу навредить – тогда о читаемости не может быть и речи.
- уникальными: в Питоне есть встроенные функции, называть переменные их именами нельзя: тогда функция станет недоступна. Среди них есть file, dict, all, str.
Читайте дальше
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
JavaScript: Выбор имени переменной
Представим себе, что программа из прошлого урока выглядит так:
let x = 'Father!'; console.log(x); console.log(x);
Она по прежнему работает, но в ней изменилось имя переменной на x . Компьютеру без разницы, как мы называем переменные, это бездушная машина, но вот программистам — нет. Мы гораздо чаще читаем код, чем пишем. Причём не свой, а написанный другими людьми. От качества и понятности имён переменных зависит половина успеха в анализе кода.
Лучше посидеть и придумать название, которое описывает суть, смысл переменной, чем назвать её как попало, а в будущем переделывать. Постарайтесь давать им такие имена, чтобы они были максимально понятны без контекста, без изучения окружающего кода.
Существует общепринятое правило: не используйте транслит для имён, только английский язык. Если вы испытываете сложности с английским, то пользуйтесь переводчиком. Со временем, копаясь в чужом коде, вы сформируете правильные понятия для именования.
Среди разработчиков есть шутка: «самое сложное в программировании — названия переменных и инвалидация кеша». Придумывать названия и правда сложно. Как бы вы назвали переменную, в которой хранится количество неоплаченных заказов от клиентов, имеющих задолженность в предыдущем квартале?
Ответ Правильного и однозначного ответа на этот вопрос нет. Например, можно использовать название `unpaidOrdersFromDebtorsInPreviousQuarterCount`. Это имя хорошо описывает содержание переменной и позволяет легко идентифицировать ее смысл в коде. При этом оно слишком длинное и сложное, поэтому лучше использовать более краткое имя — например, `unpaidOrdersFromDebtorsCount` или `debtorsUnpaidOrdersCount`. В общем, выбор имени для переменной зависит от контекста использования.
В JavaScript в именах констант и переменных каждое слово пишется с заглавной буквы, кроме первого. Например:
const firstName = 'John'; console.log(firstName); // => John const playerNumber = 24; console.log(playerNumber); // => 24
Самопроверка. Придумайте название для переменной, в которой будет храниться «количество братьев и сестёр короля». Запишите его в блокноте или отправьте себе на почту. Не указывайте там ничего, кроме названия переменной. А через несколько уроков мы вернёмся к этой теме 😉
Задание
Создайте переменную, описывающую дословно «количество моих братьев», и присвойте ей значение 2. Распечатайте содержимое переменной. После успешной проверки сравните своё имя с именем, которое используется в учительском решении.
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Полезное
- Именование в программировании
- Ошибки в именовании переменных
Определения
- Переменная — способ сохранить информацию и дать ей имя для последующего использования в коде.
Какие имена переменной правильные
В разных языках программирования вы встретите разные стили наименования переменных, например: some_counter, $somecounter, SomeCounter, someCounter, mSomeCounter и так далее.
В языке Java с этим строго, всего несколько правил:
1) Все переменные и методы в Java всегда именуются только используя так называемую нижнююВерблюжьюНотацию или lowerCamelCase.
В этой нотации, когда переменная состоит из нескольких слов, то
а) все слова пишутся слитно,
б) первое слово пишется с маленькой буквы,
в) каждое следующее слово пишется с большой буквы.
Переменные никогда не должны начинаться со знака подчеркивания или знака доллара (хоть формально такую переменную и можно задекларировать).
int someCounter; double himmelDonnerWetter; Ship[] ourShips; char friendZone;
1a) Если в переменной встречается аббревиатура из трех или более букв – то используется CamelCase вместо верхнего регистра (например, вместо parseDBMXMLFromIPAddress нужно писать parseDbmXmlFromIPAddress ). Двухбуквенные аббревиатуры можно тоже писать используя CamelCase, если это повысит читабельность (например, parseDbmXmlFromIpAddress ).
2) Константы именуют только БОЛЬШИМИ_БУКВАМИ с использованием подчеркивания для связи слов.
static final int MAX_PARTICIPANTS = 10;
3) Все названия классов, интерфейсов и перечислений даются только с использованием ВерхнейВерблюжьейНотации или UpperCamelCase
В этой нотации, когда переменная состоит из нескольких слов, то
а) все слова пишутся слитно,
б) первое слово пишется с большой буквы,
в) каждое следующее слово пишется с большой буквы.
class SomeCounter < >class HimmelDonnerWetter < >class BigShip
Имейте ввиду, что неспособность следовать этим правилам может привести к путанице и ошибочному коду. Например, widget.expand() и Widget.expand() подразумевают существенно различное поведение: widget.expand() подразумевает вызов метода expand() в экземпляре с именем widget, тогда как Widget.expand() подразумевает вызов статического метода expand() в классе Widget.
4) Пакеты именуют только маленькими_буквами с использованием подчеркивания для связи слов.
package io.khasang.java.big_lesson;