
Говорим о "Костылях" в программировании и веб разработке человечиским понятным языком.
Если ты хоть раз слышали, как программист ругается на "индийский код" или кричит "да кто это писал?!", скорее всего, он наткнулся на Костыль. Это, пожалуй, самый популярный инструмент в веб-разработке, хотя в резюме его никто не указывает.
Что такое "Костыль" простыми словами?
Официально: Костыль (на англ. Workaround или Kludge) - это способ быстро решить проблему в коде, который работает "криво", выглядит ужасно, нарушает правила архитектуры, но зато решает задачу здесь и сейчас.
Аналогия с "Удавом" они же Стори поинты (чтобы понял даже новичок): Представь, что у тебя есть стул, у которого отвалилась ножка.
- Правильное решение (Рефакторинг): Разобрать стул, выточить новую ножку на станке, приклеить, покрыть лаком. (Занимает 2 дня).
- Костыль: Подложить под сломанную ножку толстую книгу. (Занимает 5 секунд).
Стул стоит? Стоит. Сидеть можно? Можно. Красиво? Нет. Если пнуть книгу, стул упадет? Обязательно. Вот эта книга и есть костыль в программировании. Держится на честном слове и синей изоленте.
Почему веб-мастера используют Костыль?
Мы ставим костыли не потому, что мы плохие мастера (ну, обычно нет). Чаще всего работает правило: "Нет ничего более постоянного, чем временное".
Основные причины появления костылей:
- Горят дедлайны: Заказчик орет "Надо было вчера!", и у тебя нет времени переписывать весь модуль корзины. Ты просто "затыкаешь дыру".
- Лень и усталость: Проще дописать
!importantв CSS, чем искать, где там в 1000 строк кода спрятался конфликт стилей. - Легаси (Старый код): Код сайта настолько старый и запутанный, что если исправить одну строчку "правильно", рухнет весь сайт. Поэтому мы ставим "подпорку" сбоку.
Примеры "Костылей" из жизни (Узнаете себя?)
Пример из верстки (CSS): Вам нужно выровнять кнопку по центру. По-хорошему надо использовать flexbox или grid. Но они почему-то не срабатывают. Психанув, ты пишушь:
.button {
margin-left: 35%; /* Авось будет по центру */
margin-top: -10px; /* Подтянем повыше */
}
На вашем мониторе - идеально. На телефоне всё уехало вправо. Типичный костыль.
Пример из JavaScript: Скрипт выдает ошибку, и вы не знаете почему. Вместо того чтобы чинить, вы оборачиваете всё в конструкцию try...catch (игнорирование ошибки), чтобы браузер просто "молчал". Проблема осталась, но её не видно.
Костыли - это "темная сторона" разработки. Ими пользуются все: от зеленых Джунов до седых Сеньоров.
Главное правило веб-мастера: Если уж пришлось поставить костыль (жизнь заставила) - напишите комментарий в коде: // ТУТ КОСТЫЛЬ, ПОТОМУ ЧТО СРОКИ ГОРЕЛИ. ПЕРЕДЕЛАТЬ!. Иначе через год вы сами посмотрите на этот код и спросите: "Какой идиот это написал?". А это были вы.
