例如,如果您真的需要知道对象的id是什么,那么修改Object#object_id
在理论上是否安全,因为总有Object#__id__
存在?
背景:What's another name for object_id?
最佳答案
在一个理想的系统中,所有的东西都被完美地记录下来,所有使用代码的人都知道什么被重新定义和修补了——那么是的,也许。
但我们都知道,这种情况很少存在。我个人认为,修补Kernel
、Class
、Module
或Object
中定义的任何内容都是不可以的(除非您是在框架级别进行修补)。
最后,我相信最小惊喜原则应该渗透到所有级别的编码决策中。
关于ruby - 从理论上重新定义任何不以下划线开头的Ruby方法是否安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5266826/