refキーワードを広範かつ不必要に使用するコードを継承しました。元の開発者は、 refを使用しない場合、オブジェクトがプリミティブ型のように複製されることを明らかに恐れており、5 万行以上のコードを記述する前に問題を調査しませんでした。
これは、他の悪いコーディング慣行と相まって、表面上はとてつもなく危険な状況を生み出しています。例えば:
Customer person = NextInLine();
//person is Alice
person.DataBackend.ChangeAddress(ref person, newAddress);
//person could now be Bob, Eve, or null
住所を変更するために店に足を踏み入れ、まったく別の人として店を出ることを想像できますか?
恐ろしいことですが、実際には、このアプリケーションでのrefの使用は無害に見えます。クリーンアップにかかる膨大な時間を正当化するのに苦労しています。アイデアを売り込むために、次の質問をします。
他にどのように ref を不必要に使用すると破壊的になる可能性がありますか?
特にメンテナンスには力を入れています。例を含むもっともらしい答えが優先されます。
また、クリーンアップは必要ないと主張することもできます。