El mal uso de “framework”

Publicado en Desarrollo a medida hace 3 años y 3 meses. Leído 1071 veces.

Aquí en España tenemos obsesión con el término “página web”. Se usa indistintamente para una aplicación web, portal web, foro, o lo que se tercie. Podríamos usar “sitio web” para los casos anteriores que sería más correcto, pero no, se nos ha metido entre ceja y ceja usar “página web”. ¿ Esto sólo pasa con el término ‘página web’ ?. No, también con el de ‘framework’.

Si te dedicas al desarrollo verás que vivimos en la época de los frameworks. Tenemos frameworks CSS, frameworks JS y por supuesto framework PHP. Tenemos ya frameworks casi hasta en la sopa. Lamentablemente esto no es que sea así. Simplemente, como se intuye, estamos haciendo mal uso de la palabra ‘framework’.

Esto no es algo nuevo, hace unos años en el libro de “Design patterns” de GoF ya tuvieron que especificar las diferencias entre toolkit y framework por la confusión que producían. Vamos a ver estas definiciones junto con otras: * Biblioteca ( o library ): Código reutilizable para, normalmente, operaciones a bajo nivel. Por ejemplo: hacer operaciones matemáticas como de potencia, logaritmos, etc. * Módulo: Conjunto de bibliotecas encapsuladas que trabajan juntas como una unidad. * Paquete: Módulo que está condicionado por su ubicación. * API: Conjunto de paquetes cada uno independientes entre sí. * Componentes: Conjunto de paquetes o módulos preparados para trabajar juntos entre sí para lograr un fin determinado. * Toolkit: Conjunto de APIs o de componentes. * Framework: Código preparado para trabajar junto y que permite la reutilización de decisiones de diseño. Ejemplo de decisiones de diseño: ¿ Que convenio uso para los nombres de mis clases ?, ¿ dónde las ubico ?, etc. * CMS: Aplicación web que sirve para que puedas manejar los contenidos de un sitio web. * CMF: CMS que además de ayudarte con la gestión de la web te permite reutilizar decisiones de diseño. * Convenio de codificación:: Decisión tomada libremente entre unas pocas personas para marcar una guía de estilo de codificación para sus desarrollos.

A veces, Toolkit y Framwork pueden confundirse. ¿ Cómo diferenciarlos ?. Bien, a través de la característica más distintiva de los frameworks: la inversión de control. Normalmente el código de tu aplicación es el que llama al código que necesitas, esto también se cumple para los toolkits. Sin embargo, para el caso de los frameworks, son ellos los que llaman a tu código. Por lo mismo, tendrás que tener unos nombres de clases determinados, tus métodos deberían de seguir algunas reglas, … recuerda que estas son decisiones de diseño de las que te quieres librar de tomar, es por eso que que decides usar un framework. Si no te gusta estar tan atado, usa toolkits.

Según lo dicho, cuando yo probé hace años Zend Framework( aún no había salido ni la versión 1 ), no era un framework, era un Toolkit. No sé si ya habrá cambiado.

Lo poco que conozco de Symfony, y por tanto puede que me equivoque, me hace pensar que es un toolkit. Veo que Symfony es un conjunto de componentes con algunas convenciones de código.

Jquery tampoco es un framework por mucho que nos empeñemos en caracterizarlo así, es una librería como podemos leer en su página principal.

Bootstrap que al principio se autodenominaba como toolkit( “Bootstrap is one of the most complete front-end toolkits out there with dozens of fully functional components ready to be put to use” ), parece que vieron que eso no tiene marketing y decidió ponerse como framework.

Trasweb Framework, un framework PHP que desarrollé en 2013, no es un toolkit porque te hace reutilizar decisiones de diseño sí o sí y hay inversión de control. Sin embargo, hace que la parte de código relacionada con tu proyecto se comporte como un toolkit, es decir, como un conjunto de componentes. De manera que los componentes se pueden instanciar como si fueran clases aunque no sean sólo clases. En este caso si se podrá hablar de ambas cosas pero con “pinzas”. ( A ver si un día me pongo a grabar un vídeo para enseñarlo ).

Ten cuidado para usar la palabra framework a la ligera, ya no tienes excusa para ello. Más aún si eres un profesional del desarrollo web.

4 comentarios

No se cuando escribiste este post, pero Symfony, según la inversión de control que describes es un framework. Al menos en Symfony 2.

Saludos! Muy buen blog ;)

Escrito por Alvaro el 01-06-2015 a las 08:25

Gracias, Álvaro por la aclaración. La verdad es que Symfony lo conozco poco y como lo poco que conozco no me ha gustado, no he ido a más. Así que siempre que hablo de él en cosas que no tengo ni idea, como en este post, pongo que es de oídas o apreciaciones mías personales. Gracias también por la opinión del blog :)

Un saludo.

Deja un comentario

Puedes usar Markdown para formatear tu comentario.

Este sitio utiliza cookies propias y de terceros para mejorar tu experiencia con el sitio web. Al continuar con la navegación consideramos que acepta su uso.