stringtranslate.com

Обезьяна нашивка

В программировании , обезьянья патча — это метод, используемый для динамического обновления поведения фрагмента кода во время выполнения. Он используется для расширения или изменения кода времени выполнения динамических языков, таких как Smalltalk , JavaScript , Objective-C , Ruby , Perl , Python , Groovy и Lisp , без изменения исходного кода.

Этимология

Термин monkey patch , похоже, произошел от более раннего термина guerrilla patch , который означал скрытное изменение кода – и, возможно, несовместимое с другими подобными патчами – во время выполнения. Слово guerrilla , почти гомофонное с gorilla , стало monkey , возможно, чтобы сделать патч менее устрашающим. [1]

Альтернативная этимология заключается в том, что это относится к «возне» с кодом (возне с ним). [ необходима цитата ]

Несмотря на предположение из названия, «monkey patch» иногда является официальным методом расширения программы. Например, веб-браузеры, такие как Firefox и Internet Explorer, раньше поощряли это, хотя современные браузеры (включая Firefox) теперь имеют официальную систему расширений. [ необходима цитата ]

Определения

Определение термина различается в зависимости от сообщества, использующего его. В Ruby , [2] Python , [3] и многих других динамических языках программирования термин monkey patch относится только к динамическим изменениям класса или модуля во время выполнения, мотивированным намерением исправить существующий сторонний код в качестве обходного пути для ошибки или функции, которая не действует так, как хотелось бы. Другие формы изменения классов во время выполнения имеют разные названия, основанные на их разных намерениях. Например, в Zope и Plone исправления безопасности часто доставляются с помощью динамической модификации класса, но они называются hot fixes . [ необходима цитата ]

Приложения

Обезьянья заплатка используется для:

Подводные камни

Вредоносные, некомпетентно написанные и/или плохо документированные патчи могут привести к проблемам:

Примеры

В следующем примере Python значение числа Пи из стандартной математической библиотеки Python подвергается патчу, чтобы соответствовать закону штата Индиана о числе Пи .

>>> import  math >>> math . pi 3.141592653589793 >>> math . pi  =  3.2  # monkey-patch значение Pi в модуле math >>> math . pi 3.2 ================================= ПЕРЕЗАПУСК =============================== >>> import  math >>> math . pi 3.141592653589793 >>>

Смотрите также

Ссылки

  1. ^ "Глоссарий — Определение 'Monkey patch'". Система управления контентом Plone . Архивировано из оригинала 2021-01-22 . Получено 2021-07-02 . когда кто-то очень тщательно создавал партизанский патч и пытался избежать любых сражений, они пытались сделать его менее сильным, называя его monkey patch
  2. ^ Наттер, Чарльз Оливер. «Очищение Рубина». Чарльз Оливер Наттер .
  3. ^ Biswal, Bimal. "Monkey Patching in Python". Советы по программным технологиям . Mindfire Solutions. Архивировано из оригинала 22 августа 2012 г. Получено 9 декабря 2013 г.
  4. ^ Закас, Николас К. (2 марта 2010 г.). «Поддерживаемый JavaScript: не изменяйте объекты, которыми вы не владеете — Human Who Codes». Human Who Codes .
  5. ^ "Новое в Rails: Module#alias_method_chain". Ruby on Rails .
  6. ^ «Испорченные ядра — Документация ядра Linux». www.kernel.org . Получено 12 июля 2020 г. .
  7. ^ Пол, Райан (2009-05-04). «Mozilla обдумывает изменение политики после битвы за расширения Firefox». Ars Technica . Получено 2020-07-12 .