Cómo eliminar expresiones switch en C#

Descubre alternativas prácticas para eliminar expresiones switch en C#: desde sentencias if y diccionarios de funciones hasta el patrón de Estrategia con inyección de dependencias, para mejorar la mantenibilidad y las pruebas.

10 sept 2025 • 4 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Introducción: en la comunidad de desarrollo hay debate sobre las desventajas de las expresiones switch en C# y la recomendación de evitarlas en algunos contextos. En lugar de entrar en la discusión de pros y contras, este artículo muestra alternativas prácticas para reestructurar código cuando se decide eliminar una expresión switch.

Contexto y ejemplo inicial: imagine una aplicación de consola que asocia hábitos con mascotas. Tenemos una clase Habit con propiedades booleanas sencillas como Shy o Lazy y un enum Pet con valores None, Cat, Dog y Rabbit. También existe una clase PetsHabit con un método MapHabitsUsingSwitch que devuelve una nueva instancia de Habit basada en el valor de Pet usando una expresión switch.

Refactorizar un switch a if: la primera alternativa obvia es cambiar la expresión switch por varias sentencias if. Esto funciona pero no es ideal porque el código sigue siendo procedural y difícil de escalar cuando aparecen nuevos tipos. Además se pierde claridad y se violan principios como abierto para extensión y cerrado para modificación.

Refactorizar con delegados o mapa de funciones: una mejora típica es reemplazar el switch por un diccionario que mapea cada Pet a una función que construye el Habit correspondiente. En lugar de usar tipos genéricos en la descripción, la idea es simple: crear un diccionario con clave de tipo Pet y valor de tipo función que devuelve Habit, por ejemplo un mapeo que asocia Pet.Cat a GetCatHabit, Pet.Dog a GetDogHabit y así sucesivamente. Luego se busca en el diccionario y se invoca la función encontrada o se devuelve un Habit por defecto si no existe la clave.

Ventajas de usar delegados: este enfoque separa la lógica por caso en funciones independientes, facilita el testing y permite registrar o inyectar nuevas funciones en tiempo de ejecución. Es especialmente útil cuando las reglas de construcción de objetos son complejas o varían con frecuencia.

Patrón estrategia y polimorfismo: otra solución más orientada a objetos es aplicar patrón estrategia o polimorfismo. En este enfoque se define una abstracción HabitProvider con un método GetHabit y se implementan clases concretas como CatHabitProvider, DogHabitProvider y RabbitHabitProvider. Luego se utiliza un contenedor o una fábrica para resolver la implementación adecuada según el tipo de mascota. Esto mejora la adherencia al principio de responsabilidad única y hace que añadir nuevas mascotas sea más limpio y menos propenso a errores.

Inyección de dependencias y extensibilidad: combinar el patrón estrategia con inyección de dependencias permite registrar proveedores en el contenedor y delegar la resolución a runtime. Así se evita modificar una clase central cada vez que surge un nuevo caso y se facilita la integración con servicios externos, reglas dinámicas o configuraciones desde la nube.

Recomendación práctica: para casos simples y pocas ramas un switch o if puede ser suficiente por claridad. Para sistemas en crecimiento o con requisitos cambiantes se recomienda implementar una de estas alternativas: diccionario de funciones para simplicidad y flexibilidad inmediata, o patrón estrategia con polimorfismo para soluciones más estructuradas y mantenibles.

Consideraciones adicionales: mantenga las funciones pequeñas y con responsabilidad única, registre los mapeos en un lugar central y documente cómo añadir nuevas implementaciones. Si su aplicación necesita escalabilidad, registre telemetría cuando no existan coincidencias y considere validar entradas antes de mapear.

Sobre Q2BSTUDIO: en Q2BSTUDIO somos especialistas en desarrollo de software y aplicaciones a medida, ofrecemos soluciones de software a medida, integración de inteligencia artificial y servicios de ciberseguridad. Podemos ayudar a definir la arquitectura adecuada para evitar antipatrónes como switch proliferante y migrar hacia diseños basados en patrones, inyección de dependencias y despliegue seguro en la nube. Si necesita desplegar sus aplicaciones en entornos gestionados, conozca nuestro servicio de desarrollo multinube en desarrollo de aplicaciones multiplataforma y descubra cómo integrar capacidades de inteligencia artificial con soluciones de IA para empresas.

Palabras clave y servicios: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi son áreas en las que Q2BSTUDIO aporta experiencia práctica. Si precisa apoyo en automatización, análisis con power bi o hardening de sus servicios cloud, nuestros equipos pueden diseñar una hoja de ruta técnica y ejecutar la migración con buenas prácticas de seguridad y gobernanza.

Conclusión: eliminar expresiones switch en C# es una oportunidad para mejorar la arquitectura y la mantenibilidad. Evalúe el alcance del cambio, elija entre diccionario de funciones o patrón estrategia según sus necesidades y aproveche principios SOLID e inyección de dependencias para lograr un diseño extensible y testeable. Para asesoramiento o desarrollo a medida, Q2BSTUDIO está disponible para acompañarle en todo el ciclo de vida del software.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat