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 に答える