Dans un récent épisode CodeSOD du Daily WTF, Remy Porter présente un extrait envoyé par le lecteur Frederick A, issu d'un outil de webconférence utilisant WebRTC pour connecter les clients d'un chat.

La méthode en cause, IsCalling d'une classe ConferenceService, est censée vérifier si une conférence est active. Toute sa logique consiste à retourner m_ConnectionService.Core.State.IsWebRTCConnected dans un bloc try, avec un catch sans type qui absorbe toute exception et renvoie false. L'idée : plusieurs objets de la chaîne peuvent ne pas exister au moment de l'appel, donc une NullReferenceException indique commodément « non connecté ».

Frederick propose le correctif idiomatique en C# : m_ConnectionService?.Core?.State?.IsWebRTCConnected ?? false, avec les opérateurs conditionnels de null et de coalescence au lieu d'un flux de contrôle piloté par les exceptions.

Porter accepte ce correctif mais souligne qu'il ne constitue pas une vraie solution. L'état de connexion relève en réalité d'une machine à états — connecté, déconnecté, et probablement d'autres états non vérifiés —, et l'enterrer sous forme de drapeau booléen au fond d'un graphe d'objets est le vrai problème. Sans recommander de réécriture complète, il invite à modéliser les états avec plus de rigueur.