1

例如,如果您真的需要知道对象的 id 是什么,那么在理论上修改Object#object_id是否安全?Object#__id__

背景: object_id的另一个名称是什么?

4

2 回答 2

3

在一个理想的系统中,一切都被完美记录,所有使用代码的人都知道什么被重新定义和修补——那么是的,也许。

但众所周知,这样的情况很少存在。就个人而言,我觉得修补任何已经在 , 或 中定义的东西Kernel是不行Class的(除非你是在框架级别上做的。)ModuleObject

最终,我相信最小意外原则应该渗透到所有级别的编码决策中。

于 2011-03-10T22:50:56.450 回答
2

修改 Object#object_id 理论上是否安全

好吧,我认为我们可能更关心现实而不是理论。事实是,人们不会使用该__X__版本,直到他们意识到您已经覆盖并完全提升了默认行为。权力带来责任;谨慎使用猴子补丁,切勿引入意外行为。最好只为类添加一个新方法。

于 2011-03-10T22:48:41.020 回答