Refactorización de Políticas de Acceso en Laravel

Clase 21 de 23Curso de Desarrollo en Laravel con Test Driven Development

Resumen

¿Cómo mejorar el código en la fase de refactorización?

La refactorización es una etapa crucial dentro del ciclo de desarrollo de software, especialmente cuando aplicamos el desarrollo guiado por pruebas (TDD). En este proceso, después de confirmar que las pruebas pasan con éxito, tenemos la oportunidad de optimizar nuestro código para hacerlo más legible y mantenible. Durante esta clase, nos enfocamos en las políticas de acceso y cómo implementarlas eficazmente en Laravel para mejorar nuestro código, simplificar la lógica y asegurar que el código continúe funcionando correctamente después de los cambios.

¿Qué es la creación de políticas en Laravel?

Para empezar con la refactorización en Laravel, creamos una política utilizando el comando phpArtisan de la siguiente manera:

php artisan make:policy NombreDeLaPolitica

Se recomienda terminar el nombre con el sufijo "Policy" para mantener una convención estándar. Crear políticas nos permite encapsular condiciones que podemos reutilizar en distintas partes de nuestra aplicación.

¿Cómo se aplica la política de manera efectiva en el controlador?

Una vez creada la política, la siguiente labor es configurarla adecuadamente en el controlador:

  1. Registrar la política: La política debe ser registrada en el AuthServiceProvider de Laravel para que el framework la reconozca y pueda aplicarla.

  2. Ajustar el controlador: Empezamos por reemplazar las comprobaciones condicionales con llamadas al método authorize, que aprovechará la lógica definida en la política. Esto no solo simplifica el código, sino que también mejora su legibilidad.

    $this->authorize('pass', $recurso);
    
  3. Eliminar el uso redundante de Request: Al cambiar la forma de acceder a la información del usuario, podemos eliminar la dependencia directa del objeto Request, reduciendo la complejidad y mejorando la eficiencia del código.

¿Qué errores pueden surgir y cómo solucionarlos?

Durante el proceso de refactorización, es esencial ejecutar tests para garantizar que el sistema sigue funcionando como se espera. Si al realizar cambios, alguno de los tests falla, es necesario revisitar el código, identificar errores o inconsistencias y corregirlos antes de avanzar.

Los tests nos indican que un cambio no ha impactado negativamente en el sistema:

  • Verifica errores de clase faltante: Si intentas usar una clase que no existe o no está correctamente importada, se mostrarán errores. Asegúrate de que todas las clases estén correctamente declaradas e importadas.

  • Mantén las configuraciones: Al unir modelos a políticas en el AuthServiceProvider, asegúrate de seguir correctamente el ejemplo proporcionado y descomentar las líneas de ejemplo si es necesario.

¿Por qué es crucial tener tests?

El testing es una herramienta invaluable cuando se hacen cambios extensos en la base de código. Los tests permiten:

  • Detectar de inmediato errores introducidos durante la refactorización.
  • Avanzar con confianza en la implementación de nuevas características o en la presentación de un proyecto, ya que sabes que las bases del código están bien probadas y son fiables.

Al realizar el ejercicio de refactorización y testing, podrás avanzar al siguiente nivel con seguridad. La refactorización no solo mantiene el código limpio y eficiente, sino que asegura que el desarrollo sea sostenible a largo plazo.