Грязный хак

Хак — достижение цели посредством использования недокументированного или некорректно реализованного способа. Грязный хак — подвид костылей, быстрое решение какой-либо проблемы, в основном в краткосрочной перспективе, лишающее сущность (программу, продукт, вещь) внутренней красоты и дисгармонирующее с её внутренним устройством. Кошерной альтернативой грязному хаку является рефакторинг. Не путать с изжопом — использованием сложных, неочевидных способов реализации при наличии простых и красивых решений (см. Индусский код). В коде также можно увидеть так называемый nice hack (красивый хак), например небольшие участки кода, умело и красиво использованные не по назначению, что не вызывает рвотных рефлексов при их прочтении. Впрочем, это тоже считается дурным тоном, поскольку нарушает принцип KISS. Хак vs костыль Несмотря на значительную схожесть, в общем случае, понятия «хак» и «костыль» имеют заметную разницу. Не любой костыль является хаком (полно костылей, использующих стандартные приёмы, просто неуместно), но и не любой хак используется для создания костыля. Хак можно использовать как для обеспечения требуемой функциональности, так и для её нарушения или замены на нечто другое (см. хакер), тогда как костыль используется именно для решения некоторой проблемы. Хак — это способ работы, костыль — средство, которое можно получить в том числе и таким способом. Примеры Браузеры Internet Explorer 5 и 6 версий не поддерживают CSS-свойство min-height. Однако у них неправильно реализовано свойство height, из-за чего оно действует как min-height. Кроме того, только вышеперечисленные браузеры воспринимают CSS-код после * html. Остальные браузеры его игнорируют. В результате появляется возможность использовать следующий хак, позволяющий реализовывать свойство min-height во всех браузерах: div {min-height: 150px;} // Это для всех браузеров * html div {height: 150px;} // Это только для ИЕ Чтобы получить доступ к private- или protected- членам класса, в C++ (до стандарта версии C++11) можно иногда увидеть паттерн «Паблик Морозов», открывающий доступ к защищенным данным и методам: #define private public #define protected public #include <header.h> #undef private // А вот пока анонимус не дописал undef это и было грязным хаком. #undef protected ... Header *h = new Header(); int x = h->m_value; // m_value в прошлой жизни - private Более чистый способ — добавиться в «друзья» всех классов: #define private friend class Descendant; private // приписываем friend class Descendant во все классы #include <Ancestor.hpp> #undef private ... Descendant *h = new Descendant(); int x = h->m_value; // m_value в прошлой жизни - private из Ancestor — Ты пересобрал тулзу под новую версию либы? — Нет, пока что просто создал симлинк с новой либы на старую. — Какой грязный хак! Зайти на любой сайт, например на ag.ru и в адресной строке браузера прописать этот код-скрипт: javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0) после хвастать скринами перед друганами. На странице любого сайта в адресной строке браузера вписать: javascript:document.body.contentEditable = 'true'; void(0) После этого можно редактировать страницу локально у себя и делать скрины. Сам сайт, естественно, не изменится. Для того, чтоб код работал, нажимаем F12, слева внизу ищем кнопку «show console», вставляем код туда, нажимаем ENTER. См. также Костыль Индусский код Любой программист без словаря поймёт, что такое Грязный хак Языки программирования Промышленные: 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 • Лог • Ман • Рекурсия • СУБД • Тест Тьюринга • Умение разбираться в чужом коде • Фаза Луны • Фатальный недостаток Грязным хаком понтуются малолетние долбоёбы Разновидности Ванильки • Дети индиго • Малолетний долбоёб • Пионер • Феечка • Школьник Казни египетские Анорексия • Апелляция к возрасту • Армия • Банхаммер • Владимир Бельский • Деанонимизация • Девственность • Диета • ЕГЭ • Избиение лохов • Ожирение • Прыщи • Самопал • Ранний брак • СДВ • Спермотоксикоз • Ссаные тряпки • Суп из младенцев • Травля • ‎Учитель года • Черенок от лопаты Камвхоры Ashley • Блевотина-кун • Бэйли Джей • Влад Борщ • Влад Чесноков • Данила • Денис Рязанцев • Джастин Бибер • Илья Фарафонов • Кружка-кун • Лиля Желева • Маска-тян • Мечтающий стать админом • Немыто-тян • Опасный поцык • Флагшток-кун • Хабаровские живодёрки • ЧБ-тян Страдающие ЧСВ BASKA • Cruel Addict • GamerSuper • MC Воронеж • SoEasy • SupLisEr • Артём Ануфриев и Никита Лыткин • Алексей Бабушкин • Алёна Писклова • Виталик • Горд • Грегоре • Гриша Сорокин • Денис Попов • Дэниел Петрик • Ирина Добржанская • Кенни Гленн • Лантерн • Леонид Василевский • Наталия Колесникова • Соус-кун Страдающие бокланопоцтитом Supreme2 • Алевиус • Альберт Акчурин • Вован Метал • Дмитрий Щетников • Ким де Гелдер • Метатели колёс • Школьник-кун An Heroes Анна Бешнова • Гелиогабал • Игорь Грудцинов • Ильдар Мурсалимов • Карина Будучьян • Лида Очковская • Оксана Макар • Павлик Морозов • Тим Кречмер • Эрик Харрис и Дилан Клиболд Упоротые Angry German Kid • Boxxy • Ellen Feiss • Артём Свистунов • Иван Гамаз • Крикун • Невада-тян • Никита Литвинков • Николай Воронов • Повар • Сашко • Солевая • Юрий Демидович Мемы An Hero • HL Boom • Бей бабу по ебалу • Жадные дети • Жестокая Голактика • Зелёные титизены • Игрушки, прибитые к полу • Короткоствол • Лоли • Мой пездюк • ОЯШ • Респект таким парням • Садистские стишки • Срывать покровы • Тринадцатилетние девочки • Феерическая расстановка точек • Чувак, это рэпчик • Шнурки в стакане Места обитания Aeterna.ru • Beon.ru • Детская площадка • Детский лагерь • Детский сад • Селигер • Страна Эльфов • Твиди.ру • Школа Летописи School 13 • Класс • Мальчишник • Повелитель мух • Сериал «Школа» • Школоблоггеры Прочее 1 сентября • Абдуловера • Выпускной вечер • Золотая медаль • Каникулы • Переходный возраст • Пернилла Стальфельт • Юношеский максимализм • Школьная иерархия • Ювенальная юстиция