In einer aktuellen CodeSOD-Folge auf The Daily WTF präsentiert Remy Porter ein Snippet des Lesers Frederick A aus einem Webkonferenz-Tool, das WebRTC zur Verbindung von Chat-Clients nutzt.

Die fragliche Methode IsCalling einer ConferenceService-Klasse soll prüfen, ob eine Konferenz aktiv ist. Ihre gesamte Logik besteht darin, m_ConnectionService.Core.State.IsWebRTCConnected in einem Try-Block zurückzugeben, während ein catch-Block ohne Typangabe jede Exception abfängt und false liefert. Die Begründung: Mehrere Objekte in der Kette können zum Aufrufzeitpunkt nicht existieren, sodass eine geworfene NullReferenceException bequem als „nicht verbunden“ interpretiert wird.

Frederick schlägt den idiomatischen C#-Fix vor: m_ConnectionService?.Core?.State?.IsWebRTCConnected ?? false, also Null-Conditional- und Null-Coalescing-Operatoren statt ausnahmegesteuerter Kontrollfluss.

Porter akzeptiert den Fix, merkt aber an, dass er keine wirkliche Lösung ist. Der Verbindungszustand ist eigentlich eine State Machine — verbunden, getrennt und vermutlich weitere ungeprüfte Zustände —, und ihn als boolesches Flag tief im Objektgraphen zu verstecken, ist das eigentliche Problem. Eine Komplettüberarbeitung empfiehlt er nicht, mahnt aber zu sorgfältigerer Modellierung von Zuständen.