Теоретически безопасно переопределить любой метод Ruby, который не начинается с подчеркивания? - PullRequest
1 голос
/ 11 марта 2011

Например, теоретически безопасно изменить Object#object_id, поскольку всегда есть Object#__id__, если вам действительно нужно знать, каков идентификатор объекта?

Фон: Любопытство, заданное Какое еще имя для object_id?

Ответы [ 2 ]

3 голосов
/ 11 марта 2011

В идеальной системе, где все отлично документировано, и все люди, работающие с кодом, знают о том, что было переопределено и исправлено - тогда да, возможно.

Но, как мы все знаем, такие ситуации существуют редко. Лично я чувствую, что исправление чего-либо, уже определенного в Kernel, Class, Module или Object, - это нет-нет (если вы не делаете это на уровне платформы).

В конечном счете, я считаю, что Принцип Наименьшего Сюрприза должен проникнуть в решения по кодированию на всех уровнях.

2 голосов
/ 11 марта 2011

теоретически безопасно модифицировать Object # object_id

Ну, я думаю, что мы, вероятно, больше озабочены реальностью, чем теорией.Дело в том, что люди не будут использовать версию __X__, пока не поймут, что вы переопределили и полностью изменили поведение по умолчанию.С властью приходит ответственность;осторожно используйте исправления обезьян и никогда не вводите неожиданное поведение.Лучше просто добавить новый метод в класс.

...