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.
Commentaires
Pas encore de commentaire — écris le premier.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
Rien reçu ? Vérifiez le dossier spam — et marquez le message « Non spam » pour qu'il arrive directement la prochaine fois.