ものがたり(旧)

atsushieno.hatenablog.com に続く

で(メモ)

どういう話だったかというと、とりあえず無視できるMiguelのコメントは除外しておいて、以下話の流れが分かる程度のテキトーな訳:

K:「パッチ見てー」
M:「え、何じゃこりゃ。Equals()逆にしただけじゃん。ダメだよ」
B:「でもみんな同じ事言ってるし、この状況は気に入らないけど、古いコードと互換性を持たせるのは合理的だよ」
M:「Equals()を逆にしただけで動くってことは、Equals()のどっかが壊れているってことだよ」
B:「そう、壊れてるんだよ。しかも製品コードがね。」
M:「じゃあ奴らが直すべきだろう。翌週にまた逆のレポートがやってきたら、戻すのか?」
B:「どうせそいつのコードはMSランタイムで動かないんだから、結局それはバグ持ちなんだよね。で、まとめるとね、(1)似たようなバグレポは前にもあって、ちゃんとした理屈のあるテストは提供されなかったんだけど、実際に問題になっているバグはユーザーが出してるんだ。(2)パッチ自体大きなものじゃあない。(3)これで動かなくなるアプリはどうせMSランタイムでも動かない。…だから、パッチを当てちゃおうよ。」
J:「これは互換性の問題だ。互換性は神である。MS万歳!」
P:「違うから。Stack.csを見てみたけど、Push()でnullを置いたら、Contains()はnullrefになるね。正しい解決策はこのパッチがやっていることだ。あとは、パフォーマンスの問題でもあって、同じメソッドが何度も呼ばれた場合の、ローカルキャッシングが改善される。というわけで、Equals()の順番を逆にするパッチをコミットしてください。」