2021-02-08 11:26:05
Инновации на костылях — быстро или вредно?
И кодинг, и право подвержены применению костылей.
Костыль — жаргонное обозначение такого решения задачи, которое сочетает в себе все или часть таких свойств:
неполный охват — расчёт на встречу с очевидными, наиболее частыми её проявлениями, игнорирование остальных;
как следствие,
неустойчивость — возможен сбой при встрече с проигнорированными значениями или при использовании в другой временной период;
условность — например, вместо случайности предлагает "псевдослучайность";
"из-гвна-и-палок" — не является профессиональным, реализовано при помощи средств или приёмов, которые для этого не предназначены;
неуклюжесть — задействует неоправданно больше ресурсов, чем требуется (как в плане количества кода, так и в плане вычислительной мощности);
труднопостижимость — другому человеку (а то и целым поколениям) бывает сложно осмыслить, так было "специально задумано" или же сделано из-за нехватки времени, средств, фантазии.
Например, вам нужно сгенерировать случайную дату в текущем году. Реализовать это, например, в Python можно так:
from datetime import date
from random import randint
date_start = date.today().replace(day=1, month=1).toordinal()
date_final = date.today().replace(day=31, month=12).toordinal()
date_random = date.fromordinal(randint(date_start, date_final))
print(date_random)
А вот как выглядит явно костыльное решение:
from random import randint
random_day = randint(1, 28)
random_day = '0' + str(random_day) if random_day < 10 else str(random_day)
random_month = randint(1, 12)
random_month = '0' + str(random_month) if random_month < 10 else str(random_month)
date_random = '2021-' + random_month + '-' + random_day
print(date_random)
То есть во втором варианте мы не заморачиваемся с учётом количества дней для каждого месяца (не будут появляться даты с 29, 30 и 31 днём) и жёстко привязываемся к 2021-му году. Минусы этого решения очевидны.
Являются ли костыли абсолютным злом? Да нет. Они часто нужны, чтобы
сократить время на разработку какой-то фичи и за счёт этого
быстрее проверить гипотезу. Но когда окажется, что гипотеза удачна и фичу надо оставлять, код следует
переписать так, чтобы избавиться от костылей и прочих "мин замедленного действия". Нужно уметь убеждать свой менеджмент, что хоть и "оно же работает", код нуждается в существенной
доработке, чтобы в будущем эти костыли не вылезли боком (как бы это ни звучало).
А что является костылём в праве? Думаю, вы уже встречали их. Костыли встречаются в договорах, правоприменении и даже в законах. Наверняка кто-то считает и сам Хозяйственный кодекс сплошным огромным костылём в частном праве.
402 views08:26