nullが悪である場合、値が有意に欠落する可能性がある場合は何を使用する必要がありますか?
これは、繰り返し繰り返されている規則の1つであり、私を困惑させます。 ヌルは悪であり、可能な限り避けるべきです。 しかし、しかし-私の素朴さから、私に悲鳴を上げさせてください-時には価値が意味なく欠けていることがあります! 私が今取り組んでいるこのアンチパターンに乗った恐ろしいコードから来る例でこれを聞かせてください。これは、中核となるマルチプレイヤーウェブターンベースのゲームであり、両方のプレイヤーのターンが同時に実行されます(ポケモンのように、チェスとは逆に)。 各ターンの後に、サーバーは更新のリストをクライアント側のJSコードにブロードキャストします。更新クラス: public class GameUpdate { public Player player; // other stuff } このクラスはJSONにシリアル化され、接続されているプレーヤーに送信されます。 ほとんどのアップデートには当然プレイヤーが関連付けられています-結局のところ、どのプレイヤーがこのターンにどのプレイヤーを動かしたかを知る必要があります。ただし、一部の更新プログラムでは、意味のあるPlayerを関連付けることができません。例:アクションなしのターン制限を超えたため、ゲームは強制的に結び付けられました。このような更新では、プレーヤーを無効にすることは有意義だと思います。 もちろん、継承を利用することでこのコードを「修正」できます。 public class GameUpdate { // stuff } public class GamePlayerUpdate : GameUpdate { public Player player; // other stuff } ただし、次の2つの理由から、これがどのように改善されるかはわかりません。 JSコードは、定義されたプロパティとしてPlayerのないオブジェクトを受け取るだけです。これは、値が存在するかどうかを確認する必要があるため、nullの場合と同じです。 別のnull可能フィールドをGameUpdateクラスに追加する場合、この設計を続行するには多重継承を使用できる必要がありますが、MIはそれ自体が悪であり(経験豊富なプログラマーによると)、さらに重要なことには、C#はそうではありません持っているので使用できません。 このコードのこの部分は、経験豊富で優秀なプログラマーが恐怖で叫ぶことになる非常に多くのコードの1つであるという感想があります。同時に、この場所でこのヌルがどのように何かを傷つけているか、代わりに何をすべきかを見ることができません。 この問題について説明してもらえますか?