Зачем как-то по-особому называть переменные и функции
Вам по-любому придётся как-то назвать переменные и функции. С точки зрения языков программирования, переменные могут быть почти любыми: хоть a, b и c, хоть SuperImportantVariable3000. То же с функциями: они могут быть суперкороткими типа yo(), а могут быть невероятно замороченными вроде getNewPageNumberAndNavigateToThatPage(). Как скажете — так и будет. Тем более что современные текстовые редакторы делают автоподстановку всех названий, так что вам даже не придётся их запоминать.
Но есть три момента:
- Через две недели вы уже забудете, как был устроен ваш код. Если вы написали программу сегодня и вернулись к ней через 14–21 день, вы уже не сможете на ходу вспомнить, за что отвечают разные куски кода. И если по переменной или функции будет понятно, что она делает, то вы себе очень упростите задачу.
- С вашим кодом обязательно будет работать кто-то другой. Вы сделали классную программу, она функционирует, и вы приглашаете кого-нибудь тоже поработать над ней. Он откроет ваш код и должен будет в нём разобраться. Если переменные и функции названы хорошо, ему будет легко всё понять и он быстро вам поможет.
- Это влияет на приём на работу. Если решите связать свою жизнь с программированием, по названиям ваших переменных и функций будут судить о ваших качествах как специалиста. Программа может, конечно, работать и без красивого названия переменных, а вот вас в компанию могут и не позвать.
Как называть переменные
Когда начинаешь писать код, у тебя простые программы, к которым нужны простые переменные: screen, score, text и так далее. Потом проекты становятся сложнее, и переменные нужны всё более сложные: totalScore, totalScoreBefore, totalScoreAfter, totalScoreMaxProgressiveLimit и тому подобные. Тут надо остановиться и подумать вот о чём.
Чем длиннее название переменной, тем тяжелее её набрать без ошибок. Спасает автоподстановка, но если её нет — почти наверняка ваш код не полетит из-за опечатки.
Если вы пишете на JavaScript, то будет ещё хуже: так как он генерирует переменные на ходу, ошибка в переменной totalScoreMaxProgresLimit у него не вызовет подозрений. Он создаст новый элемент с этим названием, и у вас будут две переменные — одна правильная, другая неправильная. Программа запустится, но работать будет непредсказуемо.
Поэтому стремитесь выбирать короткие названия переменных, которые при этом понятны без глубокого вникания. Например, totalScore — итоговый счёт в игре, maxWidth — максимальная ширина. Если есть необходимость хранить много переменных на разных полочках, в группах или еще какими-то пачками, изучите понятия объектов и классов в JavaScript — это то, что вам нужно.
Как называть функции
Функция — это подпрограмма внутри вашей программы, которую вы часто используете. Например, можно написать функцию getNumber(), которая будет выдавать случайное число в нужном вам диапазоне. Или сказать setTimer() — и где-то внутри программы установится таймер, который выполнит то, что необходимо, по завершении отсчёта времени.
Функция может просто сделать свою работу, а может вернуть при этом какое-то значение, переменную, массив или объект. Например, можно дать подпрограмме строку текста, написать алгоритм перевода на иностранный язык, и она будет возвращать переведённый текст.
У функций тоже могут быть какие угодно названия. Но обычно они будут примерно такими:
- shuffle() — скорее всего, перемешает элементы массива;
- saveScore() — сохранит куда-то счёт игры;
- kill() — убьёт что-то;
spawn() — создаст что-то; - loadDatabase() — загрузит какую-то базу данных в память;
- makeBackup() — сделает резервную копию каких-то данных и, скорее всего, сохранит её куда следует;
- getSpeed() — выяснить, с какой скоростью что-то движется. Функция вернёт скорость;
- getUserName() — что-то произойдёт, и функция вернёт имя пользователя;
- getSessionId() — вернёт номер сессии;
- setTimeout() — задать задержку, после которой произойдёт какое-то действие;
- setSpeed() — задать чему-то скорость.
Вы заметите, что из названия функции можно понять, что она сделает и сообщит ли какой-то результат. Например, getScore() вернёт счёт игры, setScore() задаст счёт игры и ничего не вернёт, а clearScore() обнулит счёт игры и тоже ничего не вернёт.
А что с заглавными буквами?
В программировании есть два подхода к оформлению функций и переменных: camelCase и snake_case.
В camelCase переменные из нескольких слов соединяются без пробела, все новые слова пишутся с заглавной: getMoney, renderToFrame, removeFromBase и т. д. Этот подход рекомендуется в JavaScript. Обратите внимание: названия переменных и функций в JavaScript чувствительны к заглавным, то есть переменные getmoney и getMoney — это разные переменные.
Snake_case — это когда слова склеиваются нижним подчеркиванием. Это чаще используют в классах CSS. Примеры: header_marginal, form_success.
Выбирайте тот подход, который характерен для выбранного вами языка. Помните, что потом ваш код будут читать другие люди, и видеть необычно названные функции и переменные им будет тяжеловато.
Как не надо называть ни переменные, ни функции
Программисты не советуют называть переменные и функции креативно, например crazyUnicorn или wonderfulWorld(). Из названий этих функций непонятно, что они делают, возвращают ли они что-то и вообще зачем нужны.
Но, например, unicornCount — нормальная переменная с количеством единорогов. А initWorld() — функция, которая создаёт мир компьютерной игры.
Не называйте функции и переменные словами function или variable. MyVar и superFunction() — плохие варианты, потому что вы сами же через две недели забудете, что эти штуки делают.
Лучше не называть функции и переменные по-русски типа solnce или KYCb() — забудете потом, как они правильно пишутся. А когда ваша программа станет международно признанной, разработчики поблагодарят вас. При этом: если ваша функция делает «кусь», чтобы это ни значило, ее можно назвать bite() или getPiece().
Не делайте названия слишком секретными: переменные p, m, t, z или функция hm() — это слишком коротко. Исключение — когда вы пишете циклы: там используются переменные типа i, n, p — с их помощью считают, сколько раз цикл уже отработал. Но эти переменные создались, исполнили свою роль и уничтожились сразу после закрытия цикла, больше к ним не обращаются.