DEV Community

Cover image for Basta de usar else innecesarios!
Alejo Villores
Alejo Villores

Posted on

Basta de usar else innecesarios!

Cuantas veces hemos visto código de condicionales del tipo

def myFunction(){
   if (condition1){
     do something ...
   }else{
     do another thing
   }
   return result
Enter fullscreen mode Exit fullscreen mode

Si bien, no es algo que este mal, podemos refactorizar nuestro código para que el flujo de la lectura sea mas placentera.

Para poder realizar esto, lo que haremos es tomar lo que esta dentro del else, y ponerlo abajo del if, será ahora una consecuencia de que no se haya cumplido el if, que cambiará solo si la condicion se cumple.

Miremos un ejemplo sencillito

Usando if/else

def dividirEnteros(divisor, dividendo){
   if (divisor == 0){
     print("No se puede realizar dicha operacion")
     return -1
   }else{
     resultado = dividendo / divisor
    return resultado   
   }  
Enter fullscreen mode Exit fullscreen mode

Usando solo if

def dividirEnteros(divisor, dividendo){
   resultado = 0
   if (divisor == 0){
     print("No se puede realizar dicha operacion")
     return -1
   resultado = dividendo / divisor

   return resultado
Enter fullscreen mode Exit fullscreen mode

Veamos que si lo extendemos a casos mas complejos, su potencial aumenta.
Imaginemos que tenemos que checkear que ciertos datos esten correctos, algo que es muy comun de ver es una cadena de if anidados

def myFunction(){
   if (condition1){
     si condicion1 se cumple, miro la condicion 2
     if (condition2) {
        si la condicion 2 se cumple, miro la 3 y asi hasta n...
        operaciones
     }
     else {
       operar distinto
     }
   }
   }else{
     do another thing
   }
   return result
Enter fullscreen mode Exit fullscreen mode

Luego de 2 ifs, la cosa se pone pesada para comprender la función.
La solución a esto, es proponer un sistema de capas de control, cada capa tendrá una condicion que representa un nivel.De esa manera nuestro código queda de la siguiente manera.

def myFunction(){
   inicializacion...
   if (!condition1){
     hacer cosas
   }
   hacer otras cosas

   if (!condition2) {
     hacer cosas
   }
   ...
   hacer otras cosas
   return result 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)