В эту статью нужно добавить как можно больше костылей.Также сюда можно добавить интересные факты, картинки и прочие кошерные вещи.
Костыль — средство добавления недостающей функциональности или исправления серьёзных дыр без должного редизайна системы. Каждый костыль затрудняет дальнейшее развитие. В тех случаях, когда костыль уничтожает незапланированную функциональность, называется заплаткой.
Определение из kostylism:Рекурсивный костыль IRL, исправляющий сам себя.IRL костыль, исправляющий баг с дверью.Типичная реализация.
В этом мире много т. н. «костылей». Четкого определения нету, но, в общем, костыль — это нечто, что навешивается на что-то для решения какой-либо возникшей проблемы (и/или добавления функциональности), вместо того, чтобы это «что-то» переработать (возможно, с нуля). Яркие примеры костылей — ipsec, smtp auth, pppoe, и прочее.
Если «костыль» отлично работает и не доставляет проблем ни пользователям, ни разработчикам, то можно считать его «технологическим крепежом». [1]
Суть
Костыли могут создаваться в силу неспособности разработчика создать более фундаментальное решение, либо в случае необходимости быстро устранить некий критичный баг, исправление которого более элегантным методом в предоставленные сроки невозможно. Такие костыли называют «временным решением», но, как говорится, «нет ничего более постоянного, чем временное (решение)». Маленький костыль называют «грязный хак» или сопля. Как и костыли, сопли могут создавать проблемы в дальнейшем. Есть мнение, что в этом вашем программировании есть три основных парадигмы: костылирование, инкостыляция и поликостылизм.
Синонимом кода, состоящего из костылей чуть более, чем полностью, является индусский код.Окостылил говнокод?Ляг, поспи и все пройдет.Встал, покодил, все равноПолучается говно.Как не патчил много лет,Как не фиксил баги,Все-равно велосипедНа костыльной тяге.Что б совсем без костылей,Великов и баговНанимайте, говорю,Нанимайте магов!Способы борьбы с костылямиПереписать всё начисто.Взять и уебать Убедить автора, что так писать нехорошо, и переписать начисто.Убить нахер Убедить ПМа, что быстро только мухи рождаются, и пересмотреть сроки.Добавить ещё один костыль.Объявить фичей и построить вокруг ровное приложение.Пример
При написании программ для Microsoft Windows некоторые программисты полагались на баги WinAPI. Позднее, при создании свободной реализации WinAPI Wine, эмуляцию соответствующих багов пришлось добавить специально, чтобы обеспечить совместимость этих программ с Wine. Некоторый лулз состоит в том, что в MS при разработке новых версий софта занимаются тем же самым ради совместимости с предыдущими версиями.
Я впервые услышал об этом от одного из разработчиков популярной игры SimCity, который поведал мне о критической ошибке в их программе: она использовала память сразу после ее освобождения. Главное табу, нарушение которого прощалось в DOS, но карается в Windows, где освобожденную память тут же стащит другое работающее приложение. Тестеры в команде разработки Windows протестировали множество популярных приложений, чтобы убедиться, что все работает без сбоев, но SimCity зависала. Они сообщили это разработчикам Windows, которые дизассемблировали SimCity, шаг за шагом в дебаггере найдя ошибку, и добавили специальный код, проверяющий наличие SimCity в памяти и запускающий распределитель памяти в специальном режиме, в котором SimCity разрешается использовать память после ее освобождения.
Отсюда
То есть даже когда они были лицом к пользователю, лицо всё равно было как жопа. Вкурочить! Костыль! Для КОНКРЕТНОЙ программы! Вместо того, чтобы просто галочку в свойства совместимости добавить — «удерживать за приложением высвобожденную память до следующей аллокации»! А если так уж хочется полной автоматики, пусть по умолчанию для СС она там стоит.
Вот бы тогда бы уже понять, что M$ надо руки отпиливать по самую жопу :(
Или вот такой костыль для IE — добавляет для элементов LI, вложенных в элемент id=cssmenu, свойство hover. Здорово нужен при написании разномастных выпадающих меню.
function cssmenuhover(){if(!document.getElementById("cssmenu"))return;var lis = document.getElementById("cssmenu").getElementsByTagName("LI");for (var i=0;i<lis.length;i++)
{
lis[i].onmouseover=function(){this.className+=" iehover";}lis[i].onmouseout=function() {this.className=this.className.replace(new RegExp(" iehover\\b"), "");}}
}
if (window.attachEvent)window.attachEvent("onload", cssmenuhover);Костыли IRL
При проектировании самолета конструкторы постоянно сталкивались с самыми разнообразными, ранее никогда не встречавшимися проблемами. Например, у компоновки самолета, выигравшего конкурс, шасси не вписывалось в предназначенный для него отсек. Для выхода из ситуации предлагались довольно экзотические решения – воздухозаборники выносились на «спину», а после выхода на заданный курс самолет должен был переворачиваться кабиной вниз и так совершать полет. При посадке бомбардировщик должен был снова переворачиваться в исходное состояние.
Из воспоминаний конструкторов советского бомбардировщика Т-4
В Петербургском метро в 99-м году обрушился козырёк над входом на станцию «Сенная площадь». После под каждый похожий козырёк подставили подпорки, которые портят вид станции и мешают пассажирам. К концу нулевых большинство из них либо перестроили (как, например, наркоманского вида Горьковская), либо под козырьки запихали ларьки, либо козырёк убран вообще. Дольше всех подпорки продержались на Василеостровской.
В самарском метро в 2002 году открыли станцию «Московская», а на оборотный тупик или съезд денег не хватило. В результате, до конца 2007 года, когда открыли станцию «Российская», поезд сначала приезжал со станции «Спортивная» на один путь станции «Гагаринская», разворачивался в тупике, подходил ко второму пути этой же станции и дальше уже ехал до конечной станции «Московская».
Также костылём водилы называют малоразмерное запасное колесо («докатку»). Вот такое, например. У прулеводов на Дальнем Востоке распространено название «банан», по-видимому, из-за жёлтого цвета диска у докаток японских машин.
См. такжеЛамерБыдлокодерГрязный хакВелосипедСсылкиЦелый сайт, посвященный сабжу и программерским лулзам.Это незавершённая статья. Вы можете помочь, исправив и дополнив её.Костыль — на ЛОРе это не нужноЛюди
alphex_kaanoken • Generatorglukoff • GuttaLinux • JB • K48 • Komintern • Shaman007 • Sherak • Sikon • Silvy • vsl • Алексей Бабушкин • Анонимус • Батарейкин • Вилфред • Ганс Рейзер • Грегоре • Денис Попов • Луговский • Михаил • Патрик • Саныч • Тео • Шаман
Мемы128 bit • Dimmu Borgir - 51k • Just for Fun • libastral.so • TRUE-DEATH-PRIMITIVE-LINUX-MITOLL • Анальное рабство • А под Слакой это работает? • Вдоль • Вендекапец • Вещества • Донской табак • Ждём ебилдов • Закопайте обратно • К логопеду, быдло • Летающие коровы • ЛОР-эффект • Машина времени • Метанация • Не нужен • Не работай под рутом • Ничего не поделаешь, это Flash • Перестаньте насиловать труп! • Плазма не падает • Программа из одной строчки на Perl • Решето • Скриншот с ЛОР • Специалисты по всему • Телепаты в отпуске • Только закончил собирать • Убей себя, как Томми • УМВР • Шрифты — говно • Электролит из соплей девственницыПрограммированиеArch • Fedora • Gentoo • GIMP • GNOME • Java • KDE • Perl • Slackware Linux • TeXПрочее12309 • Common Sense • GNOME vs. KDE • Nixburg • Аппрув • Великий Исход Модераторов • Костыль • Лолкс • Лузирс • Нытик-треды • Тукс
Костыль — это не баг, это фича!Мета
DRM (SecuROM • StarForce) • Баг • Бот (Автоответчик) • Ботнет • Варез • Глюк • Гуй • Донат • Копирайт (By design) • Лог • Нюк • Рут (Не работай под рутом) • Спортивное программированиеФичи12309 • BSOD • Cookies • Embrace, extend and extinguish • FL Studio • Sheep.exe • Winlogon.exe • Бубен • Защита от дурака • Костыль • Машинный перевод • Пасхальные яйца • Свистелки и перделки • См. рис. 1 • Съешь ещё этих мягких французских булок • ТаблэткаВредоносноеВинлок • Звонилка • Китайские пингвины • Пиксель смерти • Троян • Червь МоррисаКомпании1С • Apple • Denuvo • Google • Microsoft • SAP • ЯндексДвижения8-bit • Open source (Красноглазики • Линуксоиды) • Вирусная сцена • Даунгрейд • Демосцена • МоддингОфис3DS MAX • GIMP • GNU Emacs • Movie Maker • MS Paint • OpenOffice • PowerPoint • vi • Word • Блокнот • ФотошопОС
Android • BSD • DOS • MenuetOS • ReactOS • Windows (Phone 7 • Phone 8 • Seven • Vista) / Маздай • Линукс • Русская ОС • Фантом ОСБраузерыInternet Explorer • Опера • Тормозилла (Огнелис • Lolifox) • ХромИнтернетFlash • I2P • Low Orbit Ion Cannon • Tor • Tunatic • Чат−клиенты (Miranda • QIP • Skype • Аська • Жаббер)
РазработкаBrainFuck • C • C++ • Java • Haskell • Ассемблер
Люди
LovinGOD • Балмер • Гейтс • Генерал Фейлор • Джобс • Митник • Поттеринг • де Раадт • Спольски • Столлман • Торвальдс • ШахиджанянКостыли
Cygwin • PunkBuster • T9 • Wine • Wishmaster • Антивирусы • ХакинтошКоманды^H • ^W • Alt+F4 • Ctrl+Alt+Del • man • /me • /quit • rm -rfЛюбой программист без словаря поймёт, что такое КостыльЯзыки программирования
Промышленные: 1С • BAT • C# • C • C++ • Java • JavaScript (AJAX) • Pascal • Perl • PHP • Python • Ruby • ABAP • Ассемблер • Васик • Фортран
Эзотерические: BrainFuck • Erlang • Forth • Haskell • LISP (My other car) • Prolog • Tcl • TeXПрофессииБыдлокодер • Программист • Тестировщик • Хакер • Хеллоуворлдщик
Методы и стилиReverse Engineering • Анти-паттерн • Выстрелить себе в ногу • Грязный хак • Код (индусский) • Костыль • Метод научного тыка • Помолясь • Свистелки и перделки
Прочее
++i + ++i • Deadline • %s • 640 килобайт • CMS • Dummy mode • ЕГГОГ • Foobar • God is real, unless explicitly declared as integer • GOTO • Ifconfig • KISS • RegExp • SICP • sql.ru • Xyzzy • Дискета • Инжалид дежице • КОИ-8 • Лог • Ман • Рекурсия • СУБД • Тест Тьюринга • Умение разбираться в чужом коде • Фаза Луны • Фатальный недостаток