Como refactorizar utilizando PHPStorm

Ya llevamos tiempo hablando de refactorizar, de mejorar nuestro código y de que tengamos testado todo nuestro código para que así podamos hacer cambios y resolver bugs de manera más sencilla. Como dice Martin Fowler: “Refactorizar es una técnica para mejorar el diseño de una base de código existente”. Todo este tiempo hemos estado utilizando PHPStorm como IDE, creo que tenemos claro que es una gran herramienta, que nos ayuda a que seamos ma´s productivos, por eso hoy escribiremos una pequeña guía sobre Como refactorizar utilizando PHPStorm.

Empezaremos por lo más simple renombrar una variable e iremos mostrando distintos atajos para que podamos hacer refactoring de manera sencilla

Refactor | Renombrar

Para renombrar una constante, una clase, un método, una variable solo tenemos que poner el cursos encima y pulsar ctrl+T, con esto tendremos el submenu de refactor con el que podremos renombrar lo que queramos.

Rename

Si necesitamos un poco más de información podemos utilizar crtl+shift+F6, con ello obtendremos un cuadro de dialogo adicional que nos permitirá buscar también dentro de comentarios y/o cadenas de texto.

Antes de modificar nada, PHPStorm nos muestra una preview de donde se van a realizar los cambios, podemos excluir archivos, por si tenemos archivos que no queremos que sean renombrados.

Confirmación

Una vez que hagamos clic en Do Refactor tendremos actualizado nuestro proyecto.

Refactorizar la signatura de un método | Change Signature Refactoring

La mayor parte de las refactorizaciones tienen atajos de teclado que iremos mostrando, aunque es muy difícil conocerlos y memorizarlos todos, lo mejor es quedarse con ctrl + t ya que así vemos el menu contextual y con los cursores podemos seleccionar el método que mejor nos convenga.

Cuando cambiamos la signatura de un método con el atajo Cmd + F6 podemos ademas:

  • Cambiar el nombre de la función
  • Añadir/eliminar un parámetro
  • Asignar valores por defecto
  • Reordenar los parámetros
  • Cambiar el nombre de los parámetros
  • incluso cambiar la visibilidad

signatura

Copiar una clase a un nuevo directorio | Copy/Clone Refactoring

Con el atajo F5 podemos copiar una clase, un archivo o un directorio de un directorio a otro o clonar shift + F5 ese fichero en el mismo directorio

clonar

Extraer una constante | Extract Constant Refactoring

Utilizando “Extrar Constant refactoring” podemos seleccionar un valor y extraerlo en una constante ALT + CMD + C conseguiremos que nuestro código esté más limpio.

Constante

Extraer a una variable de la clase | Extract Field Refactoring

Es parecido a “Extraer una constante”, podemos seleccionar un valor y extraerlo como atributo de la clase con Ctrl + shift + F aunque como ya hemos dicho antes la mejor opción es Crtrl + T En la ventana emergente que nos aparecerá podremos elegir la visibilidad o incluso si queremos iniciarlo.

atributo

Extraer una interfaz | Extract Interface Refactoring

Extract Interface Refactoring nos permite crear una interfaz basada en una clase/interfaz seleccionada. Podemos darle el nombre que queramos, el namespace o elegir las funciones.

interfaz

Extraer un método | Extract Method Refactoring

Siempre que queramos extraer un trozo de código en una función separada podemos utilizar Alt + CMD + M. Con este atajo extraeremos el código a una función, para ello PHPStorm detectará los parámetros y valores de retornos, además podremos elegir la visibilidad.

metodo

Extraer una variable | Extract Variable Refactoring

Utilizando Alt + CMD + V podemos extraer a una variable no que necesitemos.

variable

variable

En la misma linea | Inline Refactoring

Es justamente lo contrario a extraer un método, lo que hacemos con el atajo Alt + CMD + N es reemplazar variables o funciones redundantes por su expresión.

inline

Mover | Mover Refactoring

Con Mover F6 podemos cambiar la localización de un archivo, un directorio o una clase.

Move

Tirar o empujar | Pull Members Up / Push Members Down Refactoring

Imaginemos que tenemos la siguiente jerarquía de clases: Customer que extiende de BaseCustomer que a si vez extiende de Person. Tirando y empujando podemos mover cualquier miembro de una clase a otra. Por ejemplo podríamos mover el método getDisplayName de Customer a Person

pull / push

Borrado seguro | Safe Delete Refactoring

Si no estamos seguros de que al borrar un archivo este archivo lo estuviésemos utilizando en alguna otra clase, ¿por que eliminarlo? cuando tenemos dudas como esta siempre podemos utilizar PHPStorm para hacer borrados seguros y que sea el IDE quien se encargue de buscar referencias al archivo, notificandonos antes de borrarlo. Esto nos permite eliminar archivos que no estamos utilizando.

borrado

Moviendo métodos estáticos | Move Static Member Refactoring

Aparte de mover archivos, también podemos mover métodos estáticos de una clase a otra, de maneras similar a como se mueven ficheros

PSR-2 y formateo del código

PHPStorm tiene una herramienta muy potente para formatear el código, con CMD+Alt+L podemos formatear el código siguiendo el estándar que hallamos configurado previamente, aunque a veces no es suficiente y necesitamos más, para ello podemos integrar PHP-CS-FIXER

PHP-CS-Fixer analiza el código PHP y trata de solucionar los problemas con los estandars PSR-1 y PSR-2, esta herramienta esta diseñada para utilizarla por linea de comandos, por ello puede ser tediosa de utilizar. Ahora veremos como integrarla dentro de PHPStorm para que podamos utilizarla de una manera cómoda.

  • Con composer instalamos php-cs-fizer de manera global
$ composer global require FriendsOfPHP/PHP-CS-Fixer

Debemos tener configurado Composer para que funcione de manera global en nuestro sistema

export PATH="$PATH:$HOME/.composer/vendor/bin"
  • Vamos a herramientas y buscamos Tools -> External Tools y añadimos una nueva

Name: Nombre de la herramienta php-cs-fixer Program: Ruta hacia php-cs-fixer /User/JesusLC/.composer/vendor/bin/php-cs-fixer Parameters: Parametros que necesita el programa fix fileDir –level=psr2 WOrking Directory: Directorio de trabajo ProjectDirFile

Ahora solo tenemos que ir en la configuración de PHPStorm a KeyMap y asignarle la combinación de teclas que queramos, yo le he asignado CMD + ALT + Ñ para que esté al lado del reformar code.

Conclusiones

Este post está basado en la documentación de PHPStorm, además si quieres aprender todo sobre PHPStorm tienes el proyecto phpstorm-workshop, yo solo he visto la parte de refactoring y está genial, ya que es posible ir paso a paso por cada una de los apartados que hemos visto en el post.

¿Y tú? ¿qué IDE utilizas? Lo conoces a la perfección, o al menos ¿te pica la curiosidad de tocar botoncitos para saber que hacen?

Anuncios

2 comentarios en “Como refactorizar utilizando PHPStorm

Comenta la entrada

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s