加载中...

猴子补丁(monkey patching)指在程序运行时动态修改类、模块或对象的属性与方法,从而在不改动源代码的情况下改变第三方库甚至语言内建类型的行为。这是动态语言开放类结构带来的能力,在 Ruby、Python、JavaScript 社区尤为常见。
动态语言的类与模块本质是运行时可变的字典/对象:给 SomeClass.method 重新赋值即可替换实现。Ruby 允许重新打开任意类(包括 String 等核心类)追加方法,Rails 的 ActiveSupport 大量以此为基础(如 3.days.ago)。
典型用途包括:单元测试中替换外部依赖(mock/stub 库的底层机制)、给旧版本库打热修复、gevent 替换标准库为协程版本、兼容性垫片(polyfill)。
补丁是全局生效的隐式修改,易引发难以排查的冲突,多个库补同一方法时后果不可预期。Ruby 为此引入 Refinements 限定补丁作用域;工程实践普遍主张能用继承、包装或依赖注入就不用猴子补丁。

登录 后参与讨论
暂无讨论,来发表第一条评论吧