Ruby 类的动态修改:猴子补丁与自我修改类
1. 猴子补丁的风险
猴子补丁(monkey patching)的风险程度取决于具体的操作。以下是不同操作的风险分析:
- 逐步组装长类 :像逐步组装 Pathname 这样的长类,很难看到真正的危险。
- 添加新方法 :给类添加全新的方法,如给 String 类添加 blank? 或 squish! 方法,风险稍高。但只要类(或其父类)没有同名方法,一般是安全的。不过,也有可能其他人会打补丁覆盖你的方法。
- 修补应用类 :修补应用类,如修复 Document 类的 average_word_length 方法,涉及到类的核心机制。但与传统方式修改类没有太大区别,关键是要清楚自己在做什么并编写测试。
- 修改关键类的主要机制 :修改关键类(如 String 类)的主要机制,风险最大。修改 String 的 + 方法可能会破坏 Ruby 的基本功能,一旦出错,会导致很多问题。不过,基本的测试很可能会迅速发现这类错误。
2. 猴子补丁概述
猴子补丁是对现有类进行即时修改的技术。可以用它来为现有类添加新方法、修改现有方法,甚至进行方法别名或删除方法。它能修复有问题的类、增强正常工作
Ruby类的动态修改与猴子补丁
超级会员免费看
订阅专栏 解锁全文
6

被折叠的 条评论
为什么被折叠?



