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.