Instrucciones Condicionales: Select Case vs. If…Else, al detalle

A continuación encontrarás traducido al Castellano el artículo escrito originalmente por Gabriel Ludosanu y publicado en el Blog oficial de Xojo.

Cuando estás escribiendo código necesitas tomar decisiones con frecuencia basándote en diferentes situaciones. Estas decisiones se gestionan mediante el uso de las sentencias condicionales.

Las sentencias condicionales le permiten a tu programa seleccionar el código que se ha de ejecutar basándose para ello en que determinadas condiciones sean ciertas o falsas.

Dos de las principales formas de hacerlo es mediante el uso de las sentencias Select Case y If…Else. Ambas permitirán a tu programa decidir lo que ha de ejecutarse, pero funcionan de una forma algo diferente. Este artículo te explicará cómo funciona cada instrucción, cuando usarla y cómo elegir la mejor para tu código.

La sentencia If…Else

Probablemente hayas visto también las sentencias If…Else en otros lenguajes de programación. Son como los bloques de construcción básicos a la hora de tomas decisiones en tu código. La principal cualidad de If…Else es que resulta muy flexible. Te permite comprobar si algo es verdadero o falso y ejecutar aquello que deba en consecuencia.

También puedes combinar condiciones mediante el uso de los operadores lógicos And y Or.

  • And: Comprueba si dos condiciones son ciertas. Por ejemplo, If age > 18 And hasLicense = True Then (Has de tener más de 18 años y una licencia).
  • Or: Comprueba que al menos una de las dos condiciones sea cierta. Por ejemplo, If score > 90 Or extraCredit = True Then (Puedes obtener una nueva partida si tu puntuación es superior a 90 o si tienes crédito extra).

Incluso puedes añadir más opciones utilizando ElseIf para crear un conjunto de reglas más complejo. Piensa en ello como si fuera tu propio libro de “elige tu propia aventura”, en donde la historia cambia en función de tus elecciones.

Ventajas de If…Else:

  • Flexibilidad: gestiona todo tipo de situaciones, incluso las complicadas en donde necesitas comprobar varias cosas al mismo tiempo.
  • Útil en escenarios con dos opciones: perfecta cuando sólo necesitas una comprobación simple del tipo Verdadero/Falso.

Desventajas de If…Else:

  • Legibilidad: cuando tienes múltiples bloques ElseIf… el código resulta realmente largo y confuso, como un laberinto con múltiples giros y opciones.
  • Mantenimiento: realizar cambios en un condicional If…Else largo puede resultar complejo. Es fácil cometer errores y equivocarse sobre la lógica del código que se ejecutará finalmente.

Ejemplo:

Var age As Integer = 25
Var message As String
 
If age < 18 Then
  message = "Minor"
ElseIf age >= 18 And age < 65 Then
  message = "Adult"
Else
  message = "Senior"
End If
 
System.DebugLog(message)

La sentencia Select Case

La sentencia Select Case es como una forma limpia y organizada de lidiar con una lista de opciones sobre una misma cosa. Imagina que tienes una variable, como una calificación de curso. Select Case te permite comprobar el curso frente a diferentes casos (como “A”, “B”, “C”), y ejecutar el código específico para cada caso.

Ejemplo:

Var grade As String = "B"
Var feedback As String
 
Select Case grade
Case "A"
  feedback = "Excellent"
Case "B"
  feedback = "Good"
Case "C"
  feedback = "Fair"
Case "D", "F"
  feedback = "Needs Improvement"
Else
  feedback = "Invalid Grade" // This is the default case
End Select
 
System.DebugLog(feedback)

La parte Else en la sentencia Select Case actúa como una opción por omisión que se cubrirá cuando la opción presentada no encaje en ninguna de las anteriores comprobaciones.

Uso de Rangos en Select Case

También puedes comprobar un rango de valores. Por ejemplo:

Var score As Integer = 85
Var grade As String
 
Select Case score
Case 90 To 100
  grade = "A"
Case 80 To 89
  grade = "B"
Case 70 To 79
  grade = "C"
Case Else
  grade = "D" 
End Select
 
System.DebugLog(grade)

Ventajas de Select Case:

  • Legibilidad: hace que tu código sea realmente limpio cuando has de lidiar con muchas opciones.
  • Mantenimiento: resulta sencillo añadir, eliminar o incluso cambiar diferentes opciones sin liarse con el resto del código.
  • Eficiencia: en ocasiones Select Case puede ser más rápido que una larga cadena de sentencias Else…If.

Inconvenientes de Select Case:

  • Sólo funciona con una cosa a la vez: básicamente para comprobar una variable o un cálculo simple contra una lista de posibilidades.
  • Menos flexible: no es tan flexible cuando lo que necesitas es comprobar una gran cantidad de cosas diferentes al mismo tiempo o bien realizar comparaciones complejas.
  • Limitaciones de rango: si estás comparando rangos numéricos, has de tener cuidado sobre el orden de las comparaciones.

Cuando utilizar cada opción

Utiliza If…Else cuando:

  • Sólo necesites comprobar si algo es cierto o falso.
  • Necesitas comprobar múltiples cosas al mismo tiempo utilizando “and” u “or”.
  • Necesitas la máxima flexibilidad para gestionar todo tipo de situaciones.

Utiliza Select Case cuando:

  • Estés comprobando una cosa contra una lista de posibles valores.
  • Quieres que tu código sea claro y fácil de comprender.
  • Buscas una forma limpia de organizar diferentes opciones.

Mejores prácticas

  • Utiliza nombres significativos: elige nombres para tus variables que describan claramente lo que contienen (por ejemplo, studentAge en vez de sólo age).
  • Mantenlo breve: procura que los bloques de tu código dentro de un If…Else o de un Select Case sean relativamente cortos y enfocados. Si un bloque es demasiado largo, considera entonces dividirlo en partes más pequeñas.
  • Comenta tu código: añade comentarios para explicar qué hace el código; especialmente en el caso de bloques If…Else complejos. Esto permitirá que otros (o tu futuro “yo”) comprendan mejor tu código.

Conclusión

Tanto Select Case como If…Else son herramientas útiles a la hora de tomar decisiones en tu código. Elegir la opción correcta depende de las necesidades de tu código. If…Else resulta genial para gestionar situaciones complicadas, mientras que Select Case es perfecto para mantener todo limpio cuando tienes una lista de opciones. Saber cuándo utilizar cada una te permitirá escribir código más fácil de mantener y comprender.

Actualización

Desde que este artículo se publicó originalmente en inglés, nuestra gran comunidad de Xojo ha llevado la discusión sobre el tema más allá. En el Foro de Xojo, los desarrolladores han compartido ejemplos avanzados, casos de uso creativos, y consejos expertos a la hora de utilizar las sentencias If…Else y Select Case.

Asegúrate de leer más sobre esto en: https://forum.xojo.com/t/re-if-then-vs-select-case/83633

Estamos inspirados continuamente por la pasión y conocimientos de nuestra comunidad; de modo que, ¡gracias por hacer de Xojo un espacio aun más colaborativo y amigable!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *