miércoles, 22 de mayo de 2013

No abuses de las librerias externas

Las librerias externas como jQuery o underscore son una gran ayuda para desarrollar aplicaciones grandes. Son librerias de utilidades genericas y normalmente su uso es apropiado. El problema viene cuando algunos desarrolladores buscan una librería para cada elemento que tienen que desarrollar. He trabajado en algun proyecto en el que me he encontrado más de veinte plugins de jQuery como parte de una applicación.


Programación Frankenstein: crear una aplicación monstruosa a base de 'coser' librerías que hacen alguna cosita

Esto es la programación Frankenstein, crear una aplicación monstruosa a base de 'coser' librerías que hacen alguna cosita. Si mi aplicacion necesita un mosaico de fotos, busco un plugin que me lo haga. Si necesito un scroll personalizado busco un plugin, si necesito visualizar las fotos como un carrusel, busco un plugin, etc, etc.

No quiero decir que no utilicemos una librería o un plugin cuando se adapte perfectamente a nuestras necesidades o cuando proporcione una funcionalidad que tardaríamos meses en desarrollar, pero el abuso de códigos externos nos puede llevar a crear un monstruo inmantenible.

La mayoría de las veces lo que necesitamos es una versión muy reducida de lo que proporciona la librería, que tiene que ser flexible para soportar las necesidades de usuarios diferentes. Habrá cientos de líneas que no utilicemos y algunos errores sin solucionar que nos obligarán a modificar un código que no conocemos.

Los problemas principales son:

  • Tenemos en la aplicación miles de líneas de código que no conocemos
  • Tenemos, probablemente, miles de líneas de código que no usamos
  • Aparecerán errores que nos obligarán a rastrear y modificar estas librerias externas
  • El cliente, tarde o temprano, solicitará alguna funcionalidad/cambio que nos obligará a cambiar el código de las librerias
  • Una vez que cambiemos un código externo, la actualizacion de las librerias se convierte en una pesadilla. Tendremos que pasar todos los cambios a las nuevas versiones o bien estar atentos a los cambios que solucionan errores e incorporarlos en nuestra versión

Cedric Dugas publica en su blog una excelente entrada sobre este tema titulada Muerte a las librerías monolíticas en el que expone algunos problemas que ha encontrado con el abuso de librerias y propone hacerse las siguientes preguntas antes de incorporar código de terceros:

  • ¿Puedo programarlo yo fácilmente?
  • ¿Tengo tiempo para hacerlo?
  • ¿Que navegadores soporta esta librería?
  • ¿Cuantos errores sin resolver tiene ( open issues )?
  • ¿Que tamaño tiene?
  • ¿El autor es de confianza?

Me parece una buena check list para reflexionar un poco antes de 'crear un monstruo'.

Fuentes:

Death to monolithic libraries

No hay comentarios:

Publicar un comentario