Args.js librería Javascript para tratamientos con parámetros

Les presentamos una librería llamada Args.js que permite en Javascript hacer cosas que de otra manera sería más complicado o requeriría bastante más código. En concreto nos permite hacer funciones donde podemos consignar parámetros de distintas formas, como opcionales, con valores por defecto, grupos de parámetros y parámetros nombrados en notación de objeto, etc.

Lo interesante, aparte de proveer de una sintaxis para poder declarar todas estas utilidades con relación a los argumentos de las funciones, es que la propia librería hace un tratamiento de los parámetros, para saber si están los que deben estar y si tienen los tipos que tú esperas recibir. Si algo no es como tú lo esperabas, la propia librería lanza excepciones que puedes tratar para implementar comportamientos determinados.

Esta librería es útil tanto si la vas a usar con Javascript en el lado del cliente, como en el entorno de servidor o propósito general, con NodeJS.

Entre otras, las funcionalidades que nos aporta son:

Declarar parámetros opcionales y parámetros requeridos: Si un parámetro requerido no se encuentra en la llamada a una función, se lanza una excepción.
Parámetros por defecto: Son parámetros que tienen valores predeterminados, si es que no se pasa ningún valor en la invocación.
Tipos obligados: Puedes decir qué tipos deben tener tus parámetros de manera obligatoria.
Grupos de argumentos: puedes recibir uno u otro tipo de parámetros, de modo que si no los recibes de un tipo, puedan concordar con otras posibilidades de otros tipos.
Argumentos con nombres: Lo que te permite invocar la función con objetos JSON en los cuales los parámetros pueden aparecer en otros órdenes. Para acarlarse simplemente usa los nombres de las llaves del objeto JSON.
Parámetros opcionales en el orden que desees: útil si por ejemplo el primero y cuarto parámetro es opcional, pero no lo son el segundo y el tercero. La librería es capaz de gestionarlo sin dolores de cabeza.

Discusión sobre la necesidad de una librería semejante

Esta librería tiene sus pros y sus contras. Son 4 Kb si está minificado y te permite controlar varias cosas clave en tu código. De alguna manera sirve para extender el lenguaje con utilidades para las funciones que, más pronto que tarde, nos resultarán atractivas. Si entras en la home del proyecto encontrarás un código de muestra, parecido al que muchos de nosotros hemos realizado alguna vez, en el que tienes que encadenar una serie de estructuras IF … ELSE para poder comprobar todos los parámetros que estás recibiendo. Es ahí donde se encuentra la potencia, ya que nos permite ahorrarnos todas esas estructuras para comprobar cosas.

Con todo lo que nos ofrece, considero que puede ser una gran ventaja para proyectos que tengan mucho código y donde hayamos llegado a una complejidad importante en las llamadas a las funciones. Sin embargo, el código que propone Args.js es un poquito feo y se hace a veces un poco engorroso. Tampoco tiene mucha pinta de código Javascript, por lo que no todos los componentes del equipo de desarrollo se sentirán a gusto al usar la librería o leer código de otros compañeros que la estén implementando.

En cuanto a la funcionalidad de asegurar que las funciones tengan parámetros determinados, de tipos fijos, considero que es un concepto interesante, no cabe duda, a la vez que útil. Si yo tengo seguridad dentro de una función que los parámetros que recibo son los que son, puedo realizar el código sin estar pendiente de un montón de comprobaciones. Pero ¿de verdad necesito esto en Javascript?.

Javascript tiene funciones que reciben un tipo variable de parámetros. Nada impide a una función dejar de enviarle algunos o todos los parámetros al invocarla. También nada impide que los parámetros sean de un tipo distinto, ¿es necesario encorsetar a Javascript? qué es más caro después de todo, ¿el peso de cargar y educar a los desarrolladores para usar esta librería, o las ventajas que nos ofrece?
La verdad que esa respuesta solo nos la dará la práctica. Investigar, usar, probar otras posibilidades y vosotros nos diréis si os parece útil.

Es cierto que Javascript funciona de una manera y que un lenguaje no está hecho para darle la vuelta y hacerle funcionar de otra. Pero también es verdad que, si esta librería nos soluciona la vida y nos hace implementar funciones complejas con menos código, aunque sea en el lado de las comprobaciones (que muchas veces se hacen tediosas), solo puede traernos beneficios.
Sin embargo, pienso que debemos de intentar solucionar las cosas por nosotros mismos, antes de usar una librería como ésta. Luego, cuando ya te has cansado de escribir 300 veces un código similar, para comprobar cosas sobre tus parámetros, es cuando debes revisar Args.js y entender por qué los desarrolladores que la crearon la consideran útil para sus proyectos.

Podes descargar la librería de su sitio oficial http://autographer.github.io/args.js/

Anuncios