例如,修改Object#object_id
在理论上是否安全,因为如果你真的需要知道对象的id是什么,总会有Object#__id__
?
答案 0 :(得分:3)
在一个理想的系统中,所有内容都记录完整,所有使用代码的人都知道重新定义和修补的内容 - 然后是的,也许。
但众所周知,这种情况很少存在。就个人而言,我认为修补Kernel
,Class
,Module
或Object
中已定义的任何内容都是禁忌(除非您在框架级别执行此操作)。 )
最终,我相信最低惊喜原则应该贯穿于所有级别的编码决策。
答案 1 :(得分:2)
修改Object#object_id
在理论上是否安全
嗯,我认为我们可能更关注现实而不是理论。事实是,人们不会使用__X__
版本,直到他们意识到你已经覆盖并完全抬高了默认行为。随着权力来到责任;仔细使用猴子修补,永远不会引入意外行为。最好只是为类添加一个新方法。