В языках программирования, поддерживающих динамическую типизацию классов - таких, как python, ruby, objective C и др. - возможность налету добавлять или замещать уже существующие данные и методы классов иногда называется Monkey patching. История возникновения этого термина связана с тем, что часто причиной подобных модификаций являлось наличие ошибок в уже написанных компонентах, исходный код которых не был доступен. Так, программисты стали писать "партизанские патчи" - Guerilla patching, которое со временем преобразилось в сходное по звучанию Gorilla patching и в конце концов устоялось, как Monkey patching.
Другой "зверский" термин, распространенный среди ruby-программистов - Duck typing - применим к объектам, семантику которых определяют не их классы, а "прикрученные" во время исполнения методы: если нечто ходит, как утка, и крякает, как утка, то, может, это есть утка?
Так что, если эта утка не крякает, как надо, нужно всего лишь колотить ее, пока она не исправится.
Другой "зверский" термин, распространенный среди ruby-программистов - Duck typing - применим к объектам, семантику которых определяют не их классы, а "прикрученные" во время исполнения методы: если нечто ходит, как утка, и крякает, как утка, то, может, это есть утка?
Так что, если эта утка не крякает, как надо, нужно всего лишь колотить ее, пока она не исправится.
Adam Keys и Patrick Ewing на RailsConf 2007.
Так родилось колоритное Duck punching...
Комментариев нет:
Отправить комментарий