пятница, 20 февраля 2009 г.

Сбрось утку с поезда


В языках программирования, поддерживающих динамическую типизацию классов - таких, как python, ruby, objective C и др. - возможность налету добавлять или замещать уже существующие данные и методы классов иногда называется Monkey patching. История возникновения этого термина связана с тем, что часто причиной подобных модификаций являлось наличие ошибок в уже написанных компонентах, исходный код которых не был доступен. Так, программисты стали писать "партизанские патчи" - Guerilla patching, которое со временем преобразилось в сходное по звучанию Gorilla patching и в конце концов устоялось, как Monkey patching.

Другой "зверский" термин, распространенный среди ruby-программистов - Duck typing - применим к объектам, семантику которых определяют не их классы, а "прикрученные" во время исполнения методы: если нечто ходит, как утка, и крякает, как утка, то, может, это есть утка?

Так что, если эта утка не крякает, как надо, нужно всего лишь колотить ее, пока она не исправится.
Adam Keys и Patrick Ewing на RailsConf 2007.

Так родилось колоритное Duck punching...

Комментариев нет:

Отправить комментарий