Folding en PHPStorm

phpstorm.jpg
Solucionex
19
Ene 18

Hace varias semanas os hablé de los marcadores en nuestro IDE favorito. Una funcionalidad muy potente pese a que no se le da demasiado uso. Hoy quiero haceros llegar otro pequeño tip que os puede resultar también muy práctico.

PHPStorm, como casi cualquier IDE de actualidad incluye en su margen izquierdo unos pequeños símbolos de + y - que valen para "extender" o "" fragmentos de código englobados en llaves. Por ejemplo un todo un if, o todo un foreach. Esto está bien y hay ciertos programadores que tienen la costumbre hacer un "collapse" a todo el código y después ir abriendo porque les incomoda a la hora de buscar tenerlo todo visible.

Lo que os quiero mostrar es esta misma funcionalidad pero personalizada para darle un sentido semántico. Podemos tener una función que por un motivo u otro se nos ha extendido más de lo normal en número de líneas de código. Sin embargo sabemos que todo tiene su lógica y está estructurado en pequeños bloques. Por ejemplo, un bloque de declaraciones, otro de validaciones, otro de operaciones y otro de devolución. O si estamos en una entidad, podemos tener el bloque de atributos, otro de getters y otro de setters.

Para crear uno de estos bloques basta con seleccionar el código que queremos incluir dentro del mismo y pulsar la combinación de teclas ctrl+alt+t (para OSX cmd+alt+t) y se abrirá un desplegable con varias opciones. Nos interesa las dos últimas (o las dos únicas según el código que hayamos seleccionado):

  • "<editor-fold...> Comments": Nos permite añadir un comentario en el bloque para identificarlo mejor, siendo este el más práctico.
  • "region...endregion Comments": Crea el bloque sin comentarios

Observad también que este mismo atajo nos vale para ser más productivos y crear ciertas estructuras de control de código como if, if/else, foreach...

folder menu

 

Este es el resultado de lo generado:

folder example expanded

 

Y así es como se ve cuando lo recogemos (el símbolo "-" de la izquierda):

folder example collapsed

 

Finalmente, veamos un ejemplo más práctico mostrando cómo podemos usar esta funcionalidad para organizar mejor nuestro código. Por poner un caso, el citado de la entidad. Así quedaría la clase User de nuestro FosUserBundle:

folder entity user

 

Espero que os haya gustado el pequeño tip. Hasta la próxima ;)