El uso de la instrucción ELSE nunca, pero que NUNCA es necesario. Veamos algunos ejemplos. > Blog | Josep Salvà - Desarrollo Web

La palabra de Wifft

En la mayoría de lenguajes de programación existe una instrucción denominada else que contiene la porción de código a ejecutar en caso de que cierta condición no se cumpla. Por ejemplo:

function comprobarEdad(int $edad) : string
{
    if ($edad >= 18) {
        $texto = "Eres mayor de edad";
    } else {
        $texto = "Eres menor de edad";
    }

    return $texto;
}

Lo que hace el trozo de código anterior es declarar una función que evalúa una condición que determina que si el valor de la variable $edad es mayor o igual a 18, entonces asigna cierto string a cierta variable. En caso contrario, entra dentro del bloque definido en la instrucción else y asigna otro string a esa variable. Finalmente, la retorna como resultado de dicha función.

Pero... veamos varias maneras de simplificar esto y hacer el código más legible. No tardaremos en descubrir que, en todas ellas, el uso de else queda relegado desde el primer instante.

Por ejemplo. ¿Y si declaramos la variable justo antes del if?

function comprobarEdad(int $edad) : string
{
    $texto = "Eres menor de edad";
    if ($edad >= 18) {
        $texto = "Eres mayor de edad";
    }

    return $texto;
}

Entonces, al estar asignada con un valor inicial a retornar, solo debemos asegurarnos de que cambie si se cumple cierta condición. En caso contrario, dicho valor inicial permanece inmutable.

¿Y si retornamos el texto directamente en cada caso?

function comprobarEdad(int $edad) : string
{
    if ($edad >= 18) {
        return "Eres mayor de edad";
    }

    return "Eres menor de edad";
}

En este caso, enseguida vemos que retornando el valor de manera directa, nos ahorramos el uso de una variable (menos memoria a utilizar) y podemos prescindir del uso de else, ya que la instrucción return detiene el flujo, retornando el valor, para saltar directamente a la siguiente instrucción fuera de la función.

¿Y si usamos un operador ternario?

function comprobarEdad(int $edad) : string
{
    return $edad >= 18 ? "Eres mayor de edad" : "Eres menor de edad";
}

En este caso, directamente sustituimos el uso de la tradicional secuencia if-else en favor de una expresión (condicion ? casoVerdadero : casoFalso) que nos permite evaluar una condición al vuelo, teniendo en cuenta cada valor a devolver en caso de que se cumpla o no. Si a esto le sumamos el hecho de que dicha expresión puede ser ubicada como valor de retorno y como valor de una variable / parámetro... pues tenemos un pack todo-en-uno =D

Bonus: Es incontable el número de veces que mis ojos han sangrado al ver esto

function comprobarEdad(int $edad) : bool
{
    if ($edad >= 18) {
        return true;
    } else {
        return false;
    }
}

En lugar de esto

function comprobarEdad(int $edad) : bool
{
    return $edad >= 18;
}