Refactoring de tu código php

Refactoring de tu código php


Php Escribir código Refactoring Desarrollador php

Hoy en día, uno de los lenguajes de programación más utilizados es, sin duda, el lenguaje PHP. No es casualidad, por lo tanto, que en Aulab seamos firmes defensores del aprendizaje de este lenguaje.

Porqué PHP y convertirse en desarrollador PHP

Varias veces, a lo largo del tiempo, hemos mencionado el potencial de PHP: convertirse en desarrollador de PHP es increíblemente rentable, no solo por ser uno de los lenguajes de programación más solicitados, cuya consecuencia es, por supuesto, encontrar una posibilidad de uso en el mundo del desarrollo web, sino también por la sencillez de su sintaxis para ojos inexpertos que aspiran a convertirse en back-end developer.
Antes de recomendarte un curso de php en línea, lecciones de php o un bootcamp de programación, queremos informarte sobre un concepto que te será útil, además, con cualquier otro tipo de lenguaje.

El refactoring

A medida que avanzas de estudiante a desarrollador de sitios web, seguramente te enfrentarás al proceso de refactorización.
La refactorización es el proceso de modificar y reestructurar el código sin cambiar su funcionalidad. Lo más probable es que ahora te estés preguntando lo qué nos preguntamos cada uno de nosotros cuando abordamos esto por primera vez: ¿por qué, si mi código es funcional, debo refactorizarlo?

Bueno, el código funcional no siempre es un buen código. Aprenderás, con el tiempo y con los distintos proyectos, que la legibilidad y la sencillez son las claves fundamentales para que el código sea mantenible y sostenible en el tiempo.

Por supuesto, al principio, tu objetivo será hacer que una parte del código funcione. Sin embargo, a medida que el proyecto avanza y se modifica, por una u otra razón, encontrarás que el acto de modificar el código ya escrito te llevará mucho más tiempo del que podrías imaginar.

Aquí toma el relevo la refactorización: gracias a ella puedes mejorar el código de trabajo y hacerlo fácil de leer y modificar incluso en el futuro.

Veamos, ahora, algunas prácticas que te serán útiles a la hora de escribir el código. En nuestros ejemplos siempre usaremos el lenguaje PHP pero, como ya se mencionó, estas prácticas pueden ser útiles en todos los lenguajes de programación.

1 - Ser expresivo

Comencemos con algo que puede parecerle simple, es decir, escriba un código expresivo. Hacer que el código se explique por sí mismo es una buena práctica apreciada por muchos desarrolladores php y no php.

En teoría, si usaste los nombres correctos para las variables y funciones, podrías comprender qué hace el código sin leerlo por completo y sin entrar en el flujo de la lógica: una verdadera bendición si vuelves a un proyecto después de mucho tiempo, ¡o si estás modificando el código escrito por tu colega!

Veamos algunos ejemplos juntos:

Ejemplo 1 Naming

Antes:

//  No esta claro que hace este metodo con la cadena proporcionada.

//  ¿Estamos estableciendo el estado? ¿Estamos comprobando el estado?

$status = $user->status('pending');

Después:

// Añadiendo "is" a los nombres, hacemos mas claras nuestras intenciones.

// Verificamos si el estado del usuario es igual a la cadena proporcionada.

// Tambien el nuevo nombre de la variable nos hace suponer que sera un booleano

$isUserPending = $user->isStatus('pending');


Ejemplo 2 Naming

Antes:

// ¿Que obtenemos? ¿El nombre de la clase? ¿El nombre completo? ¿O el camino?

return $factory->getTargetClass();


Después:

//  Es el camino que estamos recibiendo de vuelta

//  Si el usuario busca el nombre de la clase, este es el metodo equivocado

return $factory->getTargetClassPath();

2 - Extract 

Este método de refactorización consiste en separar un método extrayendo algo de código y creando un nuevo método.

El objetivo de esta refactorización es mejorar la comprensión del programa, "desempaquetando" un método demasiado largo, o un método que implementa más funciones en cada uno de ellos.

La refactorización consta de las siguientes etapa:

  1. Determinar el código para extraer el método existente.
  2. Crear un nuevo método con el código extraído previamente.
  3. Asignar al nuevo método un nombre claro que explique cual es su uso.
  4. Reemplazar el código extraído con la nueva llamada al método.

Ejemplo 1 Extract

Antes: 

//  Codigo duplicado (metodos "file_get_contents", "base_path" y extension del documento)

//  En este momento no nos interesa COMO se obtienen los ejemplos de codigo

public function setCodeExamples(string $exampleBefore, string $exampleAfter)

{

    $this->exampleBefore = file_get_contents(base_path("$exampleBefore.md"));

    $this->exampleAfter = file_get_contents(base_path("$exampleAfter.md"));

}

Después:

public function setCodeExamples(string $exampleBefore, string $exampleAfter)
{ 

    // Nuestro codigo ahora dice lo que estamos haciendo: obtener un ejemplo de codigo (no nos interesa como)

    $this->exampleBefore = $this->getCodeExample($exampleBefore);
    $this->exampleAfter = $this->getCodeExample($exampleAfter);
}

// ✅ El nuevo metodo ahora se puede utilizar mas veces


private function getCodeExample(string $exampleName): string

{
    return file_get_contents(base_path("$exampleName.md"));
}

Ejemplo 2 Extract

Antes:

// Numerosas clausulas "where" hacen que la lectura sea mas dificil

// ¿Cual es el objetivo?

User::whereNotNull('subscribed')->where('status', 'active');

Después:

// Este nuevo metodo nos dice lo que esta sucediendo

// Si necesitamos mas detalles controlamos el metodo “subscribed”

// El metodo "subscribed" ahora tambien se puede usar en otro lugares

User::subscribed();

3 - Vuelve lo antes posible

El concepto de retorno anticipado se refiere a una práctica en la que se intenta evitar el anidamiento de código desglosando una estructura en casos específicos.
A cambio, obtendremos un código más lineal, mucho más fácil de leer y comprender. Cada caso es independiente y fácil de seguir. No tengas miedo de usar varias declaraciones de devolución.

Ejemplo 1 Return anticipado

Antes:

public function calculateScore(User $user): int

{
    if ($user->inactive) {
        $score  = 0;
    } else {

        if ($user->hasBonus) {
            $score = $user->score + $this->bonus;
        } else {
            // Los ojos estan en constante movimiento debido a los diferentes niveles de identificacion de los if anidados.
            $score = $user->score;
        }
    }

    return $score;
}

Después: 

public function calculateScore(User $user): int
{
    // ✅ Los casos extremos se comprueban primero

    if ($user->inactive) {
        return 0;
    }

    // ✅ Cada caso tiene una propia seccion lo que hace que sea facil de seguir paso a paso

    if ($user->hasBonus) {
        restituisce $user->score + $this->bonus;
    }

    return $user->score;
}

Estas son 3 formas fáciles de comenzar a descubrir el mundo de la refactorización de php. Obviamente, antes de aplicarlos, todos los desarrolladores de php de tu equipo deberán estar de acuerdo. La comunicación dentro de un equipo es fundamental.

Si quieres seguir estudiando el mundo de la refactorización te recomendamos Refactoring Guru: ¡un sitio realmente muy efectivo para adentrarte en este mundo!

Curso de programación Aulab Hackademy

Conviértete en Desarrollador weben 6 meses

Descubre el bootcamp de programación Hackademy

Programa Completo

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad