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

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

На днях вышел пост со списком полезных однострочников для 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-ом лицо.

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

Также может быть вам интересно:

Microsoft открывает исходники, а её IDE супер-популярна

Решил сложить пару фактов и немного над этим поразмыслить. Реально ли Microsoft "переобулись"?

Читать »

Новый оператор match-case в Python

В новой версии Python (3.10) появится новый оператор. Новый оператор сопоставления по шаблону (match-case).

Читать »
Фото Как сделать свою middleware в Django (с примерами)

Как сделать свою middleware в Django (с примерами)

Middleware или "промежуточное программное обеспечение" - элегантный способ установить общие правила обработки запросов и ответов приложения. Давайте напишем парочку middleware, чтобы понять, как они работают.

Фото Как настроить отправку почты из Django

Как настроить отправку почты из Django

Письма об ошибках, отчёты на почту, восстановление паролей - всё это полезно при работе с сайтом. Django предоставляет удобный способ это сделать с минимумом настроек!

Фото Добавляем поддержку медиа-файлов в Django проект

Добавляем поддержку медиа-файлов в Django проект

Современные сайты редко ограничиваются только текстом и вёрсткой. Часто в заметках красуются фотографии, а рядом с описанием товаров - их изображения.

Фото Настройка журналирования (логирования) в Python с примерами

Настройка журналирования (логирования) в Python с примерами

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

Фото Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

В Django вы можете передавать данные в шаблоны посредством контекстов. Контекст передаётся из контроллера (view в терминах Django), однако, если одни и те же данные нужны в разных местах, лучше сделать свой контекст-процессор.

Фото Пример своей консольной команды в Django проекте

Пример своей консольной команды в Django проекте

Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать свои команды для управления проектом.

Фото Разграничение прав доступа на Django сайте

Разграничение прав доступа на Django сайте

Почти на любом веб-сайте необходимо разделять пользователей на группы и предоставлять им разные возможности. В Django есть довольно серьёзная система прав доступа для пользователей - давайте её рассмотрим!

Фото Пользователи и их создание в Django - своя регистрация на сайте

Пользователи и их создание в Django - своя регистрация на сайте

Если вашим сайтом должны активно пользоваться несколько человек, то полезно их различать, а значит - надо уметь создавать пользователей, либо предоставлять возможность регистрации Django пользователей.