POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Cómo eliminar expresiones switch en C#

Alternativas para eliminar expresiones switch en C#: de condicionales if a diccionarios de funciones y al Patrón Estrategia

Publicado el 10/09/2025

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.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio