"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Dominar la refactorización de código: una guía completa para usar Rector PHP

Dominar la refactorización de código: una guía completa para usar Rector PHP

Publicado el 2024-08-30
Navegar:797

Mastering Code Refactoring: A Complete Guide to Using Rector PHP
Foto de Matteo del Piano en Unsplash

Introducción al rector PHP

En el mundo en constante evolución del desarrollo PHP, mantener su base de código limpia, actualizada y eficiente es crucial. Aquí es donde entra en juego Rector PHP. Si se ha estado preguntando cómo usar Rector PHP, cómo instalarlo o qué es exactamente Rector PHP, esta guía completa es para usted. Lo guiaremos a través de los conceptos básicos, le brindaremos un tutorial detallado de PHP de Rector y le ofreceremos información sobre PHP Rector y cómo usarlo de manera efectiva. Al final de este artículo, tendrá una comprensión sólida de Rector PHP y cómo puede mejorar su flujo de trabajo de desarrollo.

¿Qué es PHP rector?

Rector se inició en 2020, pero solo obtuvo su versión 1.0 en 2024. Es una herramienta de línea de comandos que realiza un análisis estático de una base de código. A partir de ese análisis se pueden aplicar cambios. Supongo que un buen ejemplo de esto sería si su código base estuviera plagado de llamadas a array() cuando esto ahora se considera una práctica antigua, ahora reemplazada por la sintaxis de matriz corta [].

Revisar una base de código para reemplazar esto es tedioso. Podríamos usar una herramienta simple de buscar y reemplazar, pero ¿qué pasaría si hubiera una matriz() encapsulada en una cadena o dentro de un comentario que no debería cambiarse? Ahora tenemos que verificar cada instancia en la que somos reemplazados.

Este tipo de problemas es en lo que Rector sobresale. En cambio, Rector puede mirar el código y saber definitivamente si se trata de una matriz que debe reemplazarse.

Quizás te preguntes: PHP CS Fixer también puede hacer esto, lo cual es cierto. Pero Rector también tiene PHPStan trabajando bajo el capó no solo para reconocer la sintaxis sino también para analizar tipos. Esto significa que Rector puede detectar cuándo una clase tiene una clase principal particular, cuándo una variable es de un tipo particular o cuál es el tipo de retorno esperado de una función. Dándole un alcance mucho mayor para realizar cambios masivos en una base de código.

Cómo instalar PHP Rector

Esto puede parecer obvio para los desarrolladores PHP experimentados, pero hay dos formas principales y realmente depende de cómo quieras usar Rector.

Si desea utilizar Rector como parte de una integración continua, tiene sentido instalar Rector diferente en sus proyectos a través de Composer.

composer require --dev rector/rector

Pero si quisieras experimentar con Rector en uno o varios proyectos para realizar actualizaciones, sería mejor que instalaras Rector globalmente usando

composer global require rector/rector

Cualquiera que sea el paso que elijas, el siguiente paso será crear una configuración en el directorio raíz de un proyecto e incluir todas las carpetas que contienen el código PHP que deseas actualizar. Por supuesto, eso no incluye la carpeta del proveedor, ya que no queremos modificarla.

Así es como se vería una configuración para, digamos, un proyecto de Laravel:

use Rector\Config\RectorConfig;
use Rector\Php71\Rector\List_\ListToArrayDestructRector;

return RectorConfig::configure()
    ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes'])
    ->withImportNames(removeUnusedImports: true);

Rector de PHP: cómo usarlo de manera efectiva

Al igual que en la última sección, el uso de Rector se puede determinar según cómo desee usarlo. El rector aplica los cambios a través de la selección de Reglas. Esto es lo mismo que PHP CS Fixer. Estas reglas detectarán el problema y luego intentarán solucionar el problema para el cual están diseñadas.

Si deseamos usar Rector de manera de integración continua, porque queremos que todo el código esté lo más optimizado posible a medida que lo desarrollamos, podríamos usar solo un conjunto particular de reglas.

Rector tiene conjuntos de reglas, a menudo descritas como Código muerto o Calidad del código, que eliminan el código o lo mejoran y optimizan respectivamente. Es bastante ventajoso utilizar sólo estos conjuntos, ya que podemos estar seguros de que funcionan la mayor parte del tiempo. Pero debes tener absolutamente en cuenta que la forma en que Rector escribe el código nunca es perfecta. A menudo, cuando se escriben reglas, pueden cubrir los escenarios típicos y pueden pasar por alto algunas circunstancias que se encuentran en su código base. Esto podría provocar que el código se rompa.

En caso de que desee utilizar Rector, es absolutamente necesario que tenga pruebas escritas para su aplicación. Sin ellos, Rector puede fácilmente provocar la introducción de errores que no descubrirá hasta que se convierta en un problema.

Otra cosa a considerar al usar Rector es que debes usar una herramienta de linting como PHP CS Fixer. Rector no mira los espacios en blanco, los espacios y las nuevas líneas entre las llamadas a métodos y sus argumentos, etc. El uso de una herramienta de linting debería mantener el formato del código según el estándar esperado después de que Rector haya aplicado sus correcciones.

Tutorial PHP paso a paso de Rector

Ahora que hemos instalado Rector y estamos listos para probarlo, intentemos aplicar una regla. Comencemos actualizando nuestro archivo de configuración que creamos anteriormente.

use Rector\Config\RectorConfig;
use Rector\Php71\Rector\List_\ListToArrayDestructRector;

return RectorConfig::configure()
    ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes'])
    ->withImportNames(removeUnusedImports: true)
    ->withRules([
        ListToArrayDestructRector::class,
    ]);

En el caso de esta configuración, vamos a reemplazar el uso de listas para que en su lugar usemos la reestructuración de matrices. Los cambios que esperaríamos realizar son los siguientes:

-list($a, $b) = ['a', 'b'];
 [$a, $b] = ['a', 'b'];

Ahora podemos probar esta configuración realizando un ensayo de Rector.

rector --dry-run

Si todo ha sido exitoso, ahora deberíamos ver un resultado que contiene una diferencia de todos los cambios en cada archivo, con una lista de las reglas que realizaron los cambios. Nuestra configuración solo enumera una regla, por lo que solo se aplica una regla, pero si se agregan más reglas veremos una lista de una o más aquí.

Mastering Code Refactoring: A Complete Guide to Using Rector PHP

Este es un buen momento para revisar los cambios y asegurarse de que la regla funcione según lo esperado. Una vez que estemos satisfechos, podremos ejecutar Rector nuevamente. Sin el indicador de ejecución en seco, los cambios se escribirán en los archivos.

rector

Una vez completado, debemos ejecutar nuestra herramienta linting favorita y luego ejecutar nuestras pruebas. Eso es todo. Ahora hemos usado Rector.

Conclusión: Impulsa tu desarrollo PHP con Rector

Rector PHP es una herramienta poderosa que puede mejorar significativamente su flujo de trabajo de desarrollo PHP al automatizar la refactorización de código y garantizar que su base de código permanezca limpia y moderna. Al comprender qué es Rector PHP, aprender a instalarlo y dominar cómo usarlo de manera efectiva, puede aprovechar sus capacidades para agilizar las actualizaciones de código, mejorar la calidad del código y reducir el riesgo de que el código se sienta como un proyecto "heredado". Ya sea que esté integrando Rector en su canal de integración continua o usándolo para actualizaciones de base de código a gran escala, Rector es un activo indispensable para cualquier desarrollador de PHP que busque mantener un alto estándar de excelencia en el código.

Si quieres profundizar en tus conocimientos sobre Rector, te sugiero que vayas a https://getrector.com/.

Soy Peter Fox, un desarrollador de software en el Reino Unido que trabaja con Laravel. Gracias por leer mi artículo, tengo muchos más para leer en https://articles.peterfox.me. Ahora también soy patrocinador en GitHub. Si desea animarme a escribir más artículos como este, considere realizar una pequeña donación única.

Declaración de liberación Este artículo se reimpresa en: https://dev.to/peter_fox/mastering-code-refactoring-a-confunplete-guide-to-using-rector-php-hp1?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarlo.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3