Короткое имя (переменной) — способ сделать в ряде случаев выражения более наглядными.
Самый плохой стиль для имён переменных — давать им бессмысленные имена вроде Abc или Zxcv. (Хотя, может быть, кто-то пытается специально сделать свой код плохо читаемым.) Большинство профессиональных программистов стараются давать переменным говорящие имена, обычно довольно длинные, вроде User_name или User_age. И это часто правильно.
В Эрланге нет пользовательских типов данных, и из-за этого код становится менее конкретным (более абстрактным). Это даёт возможность и даже подталкивает программиста к повторному использованию кода. В других языках (можно сказать, более утилитарных) зачастую наглядным как раз является назвать класс, например, GorodaRossii, а экземпляр этого класса — GorodRossii. Пусть в классе всего два поля — название и количество жителей, — но тем не менее этот класс создан для совершенно конкретной цели, и даже само название напоминает программисту, что для других целей этот класс использовать не стоит.
Эрланг — функциональный язык, здесь только функции. Сегодня мы написали функцию для работы с пользователями, содержащую переменные User_name и User_age, завтра другую функцию — с переменными Book и Pages (допустим, для библиотеки), послезавтра поняли, что обе эти функции делают одно и то же. Разница лишь в названиях самой функции и переменных в ней. Кто-то оставит как есть, ну а кто-то создаст абстрактную функцию, то есть функцию, которая что-то делает и делает это хорошо, но изнутри неё вообще не понять, для решения каких более широких задач она писалась.
Так же, например, в математике. Кто-то когда-то придумал действие — извлечение из числа квадратного корня. Мы этим действием активно пользуемся, и нам совершенно безразлично, для чего изначально оно было придумано.
В таких функциях текстовая переменная это просто текст, а не имя пользователя или название книги. Поэтому, может быть, её лучше назвать как Text или, ещё более сокращённо, Tx. Короткие имена обеспечивают наглядность не только за счёт своей компактности, но и за счёт того, что у одного программиста или их сообщества постепенно вырабатывается устойчивое применение букв для обозначения конкретной роли переменной. Типичный пример — переменная I (i), которая во многих языках используется как счётчик, как переменная, плавно увеличивающая или уменьшающая своё значение. Часто можно увидеть, что переменная L используется для обозначения списка, а L1 и L2 обозначают список номер один и список номер два.
Не правда ли, кортеж {Module,Function,Arguments} выглядит менее наглядным, нежели {M,F,A}? Когда выражение и так очень сложное (вызов функции в вызове функции с использованием сложных термов: списков, кортежей, карт), не стоит усложнять себе его восприятие ещё и за счёт длинных имён переменных.
Когда короткие имена используются в паттернах, это тоже весьма упрощает их восприятие. В Эрланге часто можно увидеть такой паттерн [H|T] (Head — голова, Tail — хвост) для “откусывания” первого элемента списка. Можно было бы использовать и длинные переменные, чтобы не забыть, что они означают: [User | Users], но [H|T] лучше отражает суть самой операции (“откусывание”), что часто более важно. Опять же, чем сложнее паттерн, тем меньше хочется усложнять его длинными именами переменных.
Где можно, я предпочитаю использовать одно- или двухбуквенные имена. Для компилятора не имеет значения, одна буква в названии переменной или не одна. Но в некоторых случаях использование коротких имён даже может побудить программиста написать более эффективный код.
Эрланг своими особенностями побуждает чаще пользоваться короткими именами. Переменные привязаны к своим значениям раз и навсегда, и поэтому написание кода чем-то похоже на уроки алгебры в школе, где мы всегда использовали короткие названия переменных: X, Y, Z, X1, X2 и т.д. Написание эффективного кода похоже на решение системы уравнений. Результат должен быть изящным и наглядным. Если мы используем длинные имена, он уже не будет таким изящным и наглядным.
Далее в качестве примера я привожу то, какие смыслы я вкладываю (впрочем, не всегда) в некоторые короткие имена. У каждого программиста свой собственный стиль формируется годами.
A. Аргумент функции.Ak. Актор.Am. Аккумулятор.Ar. Арность.Bn. Бинарник.Dt. Точка.Dv. Устройство.E. Ошибка.F. Файл.Fd. Файловый дескриптор.Fn. Функция.Ft. Фунтерм.Gg. Гистограмма.H. Голова списка.If. Исходный файл.J. Коэффициент.K. Коэффициент.Kl. Ключ.Kt. Каталог.L. Список.Lt. Список кортежей.M. Карта.Me. Сообщение.Ml. Модуль.Mn. Множество.Mq. Карточка (карта в карте).N. Номер, натуральное число.Ns. Список нод.Of. Выходной файл.Op. Опция.P. Пид.Pl. Проплист (список свойств).Pm. Параметр.Q. Запрос (к БД).S. Состояние.Sa. Среднее арифметическое.St. Строка.Su. Сумма.T. Хвост списка.Tf. true-false.Ti. Ссылка на таймер.Tk. Токен.Tm. Время модификации.Ts. Время создания.Tu. Кортеж.Tx. Текст.Uv. Unix-время.V. Значение (value).X. Переменная в генераторе.Y. Переменная в генераторе.Z. Переменная в генераторе.Если угодно, можно даже шпаргалку вести по коротким именам, чтобы не забыть их значения.
Copyright © 2024-2026 Алексей Карманов