Программы
Нет слов, одни... однострочники

Нет слов, одни... однострочники

На днях вышел пост со списком полезных однострочников для JavaScript программистов. Памятуя Perl-овую молодость, заглянул туда.

Я понимаю, что "все, кто едет медленнее тебя - черепахи, а быстрее - самоубийцы", но снова пришло время схватиться за "клюку" и трясти ей, нудя: "вот в наше время"...

И да, вот неповторимый оригинал.

Прежде всего оговорюсь, что для меня однострочники - это что-то подобное патчу Бармина (в его perl-овой версии). Или же однострочный Bash скрипт, который, жонглируя данными, получает какую-то простую информацию о системе. То есть приятно периодически писать такое для разовых нужд, иногда интересно читать, но боже упаси такое поддерживать.

Поэтому, я подумал, что меня ждёт некий аналог "секретных операторов Perl". На деле же оказалось куда интереснее.

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

Функция "переключения" логического значения. Когда люди начитают писать функции для одного символа... это либо троллинг, либо повод задуматься. Лично мне было бы неприятно писать

    const a = toggle(b);

вместо

    const a = !b;

И здесь не просто снобизм или гонка за лаконичностью (хотя и здравая краткость кода важна для читаемости). Такой код путает читателя: какой именно toggle имеет в виду автор? Какие дополнительные возможности несёт данная функция? Читателю следует перейти к данной функции и убедиться, что он просто потратил пару секунд своей жизни, а может ещё и вышел из состояния потока.

И, поверьте, я не просто так привязался к этому. Мне уже передавали проект на доработку, где также практиковался этот подход. Файлик something/common/utils/helpers.py с функциями типа:

    def uuid():
        return str(uuid4())

    def today():
        return str(date.today())

Он был воистину велик, а его лапища были мощны, ведь там даже была документация к подобным функциям по несколько строк на каждую...

Но только понять, что там строковое значение, а не date, к примеру - минус несколько секунд на чтение доки и одно разбитое facepalm-ом лицо.

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

Изображение Python 3.11. Что нового?