Introducción

En este post contaré las múltiples formas de refactorizar con PhpStorm. Este post viene dado a partir del otro post sobre PhpStorm y que uso en mi ámbito laboral. Un IDE que nos ayudará todo lo que nosotros le dejemos, por otra parte aprenderemos como refactorizar código.

Para eso lo mejor es como acceder a los consejos de refactorización que son :

  • En Mac : ⌥⏎
  • En Windows : Alt + Enter

Refactorizando if

Combinando if

Para el caso de varios if encapsulados uno dentro de otro, como en el ejemplo siguiente :

if($valorUno) {
    if ($valorDos) {
        // Codigo
    }   
}

Situandonos en el if interior , nos saldrá la opción Merge with outer condition, lo que hacemos con esta opción es combinar lo que ya dice de por si, combinar el if de dentro, con el if de fuera.

if(($valorUno) && ($valorDos)) {
    // Codigo
}

Combinando elseif

Ahora partiendo de este código.

if($valorUno){
    // Codigo
}else{
    if($valorDos){
        // Codigo
    }
}

Situándonos en el else nos saldrá la opción Merge into else-if, transformaremos el else en un elseif. Así el else y el if que se encuentra dentro de este. Se transformará en un elseif

if($valorUno){
    // Codigo
} elseif ($valorDos) {
    // Codigo
}

Situándonos en el if nos saldrá la opción del Flip if-else, donde desará el elseif y nos creará un if dentro de otro if invirtiendo el valor del if.

if(!$valorUno){
    if ($valorDos) {
    // Codigo
    }
} 

Por otra parte si nos situamos en el if más externo. Nos saldrá Merge nested conditions esto mezclará el if externo con el interno.

if(!$valorUno && $valorDos) {
    // Codigo
}

Otros tips en los if

Intercambiando condiciones

Usando la opción Flip '&&' intercambiaremos los elementos del and.

// Codigo
if(($valorUno) && ($valorDos)) {
// Codigo

Pasaríamos a :

// Codigo
if(($valorDos) && ($valorUno)) {
// Codigo

if ternarios

Si no los usais son muy útiles pra programar y que un if de una linea no os ocupe 5. Por ejemplo :

if($valorUno == true){
    $valorDos = "Verdadero";
}else{
    $valorDos = "Falso" 
}

Si nos situamos en el if nos sale la opción de Simplify If, lo que convertirá en un if ternario.

$valorDos=$valorUno == true?"Verdadero":"Falso";

Hay poco que decir, pero los ifs ternarios son una práctica cómoda para poder hacer un código de 4 lineas en una línea de uno de forma elegante, por lo general si no cumple el PSR2:

There MUST NOT be a hard limit on line length; the soft limit MUST be 120 characters; lines SHOULD be 80 characters or less.

Es mejor no hacer el if simplificado o si al futuro tu, le costará entenderlo. En ese momento entramos si estamos refactorizando el código o lo estamos ofuscando. Que ya lo mejor es quedarse con lo siguiente :

  • Si supera los 80 caracteres o 120 si trabajamos con pantallas de buena resolución, no hacer el if ternario.
  • Si eso traerá más confusión para el programador que venga detrás o a nosotros mismos.

Breve resumen de las opciones vista

  • Merge nested conditions: Combina el if externo con el if interno.
  • Merge with outer condition: Es el inverso de Merge nested conditions, combinamos el if interno con el externo.
  • Flip if-else: Deshace el else-if en un if
  • Flip '&&': Intercambia los elementos de un if.
  • Simplify If : Convertir un if en un if ternario.

Todo ayuda

Podriamos discutir hasta donde debería llegar un IDE, por lo general los IDE cuanto más ayuden, pues mejor, pero si es algo que no llegamos por nosotros mismos, es simplemente pegarse un tiro en un pié, no nos estan enseñando, yo creo que lo mejor es obtener resultados por uno mismo, si el IDE nos da cosas hechas no aprenderemos.

Hay que hacer autocrítica y comprender que solemos infrautilizar los entornos de desarrollo (por lo general todas las herramientas que tenemos a nuestro alcance) y no los usamos en toda su extensión. Está bien usarlos, pero lo mejor es sacar el mayor partido de ellos y mejorar nuestra productividad y por otro lado la calidad de nuestro código. Porque siendo más productivos no necesariamente haremos buen código, por lo general se hacen las peores cosas. Luego vendrá detras otro programador o nosotros con más tiempo y experiencia y se mejorará lo que una vez hicimos con más experiencia que antes y con nuevos conocimientos. Con el tiempo seremos más productivos y de mejor calidad.

23-02-2020