【发布时间】:2011-08-10 03:46:21
【问题描述】:
Ruby 和 JavaScript 等一些语言具有开放类,允许您修改数字、字符串、数组等核心类的接口。显然,这样做可能会使熟悉 API 的其他人感到困惑,但是否有充分的理由否则避免它,假设您要添加到界面而不更改现有行为?
例如,将Array.map 实现添加到不实现 ECMAScript 第 5 版的 Web 浏览器可能会很好(如果您不需要所有 jQuery)。或者您的 Ruby 数组可能会受益于使用“inject”的“sum”便捷方法。只要更改与您的系统隔离(例如,不是您为分发而发布的软件包的一部分),是否有充分的理由不利用此语言功能?
【问题讨论】:
-
FWIW,有一个建议是在 Ruby 2.0 中包含一些称为“改进”的东西,这将减轻与猴子修补相关的陷阱。只是谷歌“红宝石改进”,有几篇文章。
标签: javascript ruby oop language-design monkeypatching