A blog about data, information and Tech by Mario Alberich

        

Javascript - Refactorizar y buscar estructuras de sintaxis

GraspJS es una utilidad que se posiciona como una mejora respecto al tándem grep/sed para la refactorización de código. Su propuesta de valor es sencilla: no ejecuta un análisis textual, sino estructural del código.

Análisis textual del código javascript y sus limitaciones


Durante el desarrollo aplicaciones en cualquier lenguaje podemos estar utilizando ciertos patrones en la estructura del código que posteriormente queremos localizar, ya sea porque no resultan óptimos, porque hayan quedado encapsulados en una biblioteca o utilidad diferente, o simplemente porque no cumplen los estándares y nomenclaturas que deseamos. O simplemente porque escribimos código imperfecto ya sea en javascript o cualquier otro caso, y en un momento determinado queremos corregirlo. En esa situación, ¿Cómo podemos encontrar y/o remplazar esos fragmentos?

La primera solución que nos surge es la de grep/sed: Esto es especialmente útil si ya hay un mínimo criterio en la estructura de código, o bien estamos buscando elementos que por sus características textuales ya son lo suficientemente específicos. El problema es que eso cubre un número determinado de casos, y además tiene limitaciones a la hora de aislarse del ruido que pueda tener el código: desde uso ambiguos de la nomenclatura, hasta código comentado y similares. En otras palabras, esta aproximación no se aprovecha de la sintaxis del código, lo que abriría la opción de la búsqueda estructural.

Búsqueda en Javascript por sintaxis y la refactorización


Para dar un paso más en una búsqueda estructural en código Javascript, podemos utilizar graspJS, utilizando varios sistemas de búsqueda en el código, basados en lo que el autor denomina motores:

  • Búsqueda con selectores del estilo CSS con el motor squery.
  • Búsqueda por ejemplos y wildcards con el motor equery.
  • Remplazar las coincidencias con la utilidad de remplazo, que incorpora filtros y opciones para modificar las coincidencias más allá de un remplazo literal.


En el propio blog del proyecto se pueden encontrar ejemplos más teóricos y propuestas de la vida real para aprovechar el potencial de graspJS en nuestro día a día. Vale la pena decir que la sintaxis es algo compleja y requiere de cierto tiempo de pruebas (y quizá de algo más de documentación sobre los operadores), pero es una más que interesante utilidad para seguir y aplicar en nuestros desarrollos javascript (y en el futuro a otros lenguajes).

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.