En un reciente episodio CodeSOD de The Daily WTF, Remy Porter presenta un fragmento enviado por el lector Frederick A, procedente de una herramienta de videoconferencia que usa WebRTC para conectar los clientes del chat.
El método en cuestión, IsCalling de una clase ConferenceService, está documentado como verificador de si una conferencia está activa. Toda su lógica consiste en devolver m_ConnectionService.Core.State.IsWebRTCConnected dentro de un bloque try, con un catch sin tipo que atrapa cualquier excepción y devuelve false. El razonamiento: varios objetos de la cadena pueden no existir al momento de la llamada, así que una NullReferenceException indica cómodamente «no conectado».
Frederick propone la corrección idiomática en C#: m_ConnectionService?.Core?.State?.IsWebRTCConnected ?? false, usando los operadores condicionales de nulo y de coalescencia en lugar de un flujo de control basado en excepciones.
Porter acepta la corrección pero señala que no es una solución real. El estado de conexión es en realidad una máquina de estados —conectado, desconectado y probablemente más estados sin comprobar—, y esconderlo como un flag booleano en lo profundo de un grafo de objetos es el verdadero problema. Sin recomendar una reescritura completa, insta a modelar los estados con mayor cuidado.
Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.