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

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

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

Как говорит Фил, правильное название — трудный процесс, над которым нужно хорошо подумать.

Простые примеры недостаточного именования:

Новички обычно еще не обучены думать о важности имени собственного. Первый сообщает нам только, что это буква английского алфавита, но не более того, второй нам ничего не говорит, а третий сообщает нам, что что-то произойдет.

Но в процессе обучения программированию у многих людей мы собираем информацию с течением времени, путем проб и ошибок, и постепенно совершенствуемся.

Давайте рассмотрим еще несколько примеров:

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

Давайте рассмотрим несколько лучших примеров:

Эти примеры дают нам гораздо больше понимания того, что стоит за именами. Для первого мы знаем, что это количество яблок; второй говорит нам, что это сумма денег в кошельке пользователя. Третий точно говорит нам, что он делает; он принимает сумму и тип валюты и конвертирует их в другую валюту.

Но важно отметить, что мы не должны делать имена как можно более длинными, например, называть переменную amountOfMoneyUserWalletThatWillBeUsedToPayForWater.

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

Именование применяется не только к переменным, функциям или именам классов. Имена классов имеют предпоследнее значение в CSS для стилизации HTML-элементов. Некоторые из подходов — это попутный ветер или начальная загрузка, чтобы удалить некоторые пользовательские классы, которые пишут люди, но в итоге мы получаем очень длинные строки кода. Другой метод заключается в использовании соглашений об именах. Захватывающим является соглашение BEM, которое имеет простой набор правил для написания классов.

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

Заключительные слова

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

Подводя итог, не забывайте о правильном именовании.