A blog about data, information and IT, by Mario Alberich

Mar 11
2014

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).

Tags

gestión documental 10     Recuperación información 11     Linux 7     Usabilidad 5     open source 3     Tagging 12     lógica borrosa 2     fuentes de información 12     Google 6     off-topic 6     spam 2     grafos 6     Web social 11     modelización 12     Productividad 11     buscadores 2     utilidades 17     Profesionales 9     SEO 5     estándares 3     veracidad 3     relevancia 2     lingüística 2     PLN 2     lenguajes documentales 2     apis-mashups 3     reseñas 7     Flash 7     Gráficos estadísticos 13     Publicidad 3     Innovación 5     muestreo estadístico 9     PHP 14     internet 2     testeo 12     desarrollo 3     visualizacion 36     javascript 16     datos abiertos 9     elecciones 2     simulación 5     html5 7     phing 9     ssh 2     seguridad 3     indicadores 2     demografía 3     media 2     algoritmos 7     shell 4     mysql 2     backup 2     big data 6     twitter 2     d3js 11     revealjs 2     metodología 6     data-journalism 6     smartcities 2     NYT 2     privacidad 3     benchmarking 4     recopilaciones 21     magento 5     formacion 2     github 2     HHVM 3     psicología 2     angularjs 3     grep 2     nodejs 5     promises 2     mapreduce 3     crossfilter 2     exploración de datos 2     machine learning 2    

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