Los patrones de diseño en el mundo de la programación son una especie de solución estándar para enfrentar problemas recurrentes en la elaboración de código. Como todo, cada patrón de diseño tiene ventajas y desventajas. En este post, te explicaremos cuál es la principal desventaja del patrón de inyección de dependencias para que lo tengas en cuenta antes de usar este patrón.
¿Qué es el patrón de inyección de dependencias?
Antes de enseñarte cuál es la desventaja del patrón de inyección de dependencias, queremos asegurarnos de que sabes bien cómo funciona este patrón. En nuestro post sobre qué es el patrón de inyección de dependencias, te hemos explicado que este patrón consiste en comunicar controladores o clases a través de la inyección de dependencias en su constructor.
Es decir, se insertan los elementos a gestionar como parámetro de la clase. Esto nos permite evitar que la clase gestione datos y funciones fuera de su ámbito de control. Aunque la gestión de elementos fuera del control de una clase no hará que nuestro proyecto falle, sí es una mala práctica. En este sentido, el patrón de inyección de dependencias es una forma de ejercer una buena práctica sobre nuestro proyecto. Sin embargo, no siempre es la mejor opción. A continuación te explicamos cuál es la desventaja del patrón de inyección de dependencias.
Puede que leer nuestro post sobre qué es el constructor de una clase en JavaScript te facilite el entendimiento de este patrón. También te invitamos a leer el post sobre clases en lenguajejs.com.
¿Cuál es la desventaja del patrón de inyección de dependencias?
Aunque este patrón es muy útil para comunicar algunos elementos o controladores de un proyecto, la desventaja del patrón de inyección de dependencias es que se puede volver incontrolable.
En el ejemplo que usamos para explicarte este concepto, comunicamos dos controladores insertando uno como dependencia del otro. Esto es extremadamente sencillo, pues solo necesitamos comunicar un controlador de notificación en uno de vista. Sin embargo, un proyecto web podría seguir creciendo: podríamos tener controladores de notificaciones exitosas, controladores de actualización, controladores de diseño, etc. Esto haría que el constructor de nuestra clase dependiente se extienda demasiado.
Como buena práctica, es importante tener en cuenta que un controlador o un método cualquiera con muchos parámetros es una mala idea. Incluso tan solo cuatro controladores dentro de otro sería algo muy tedioso. En realidad, la recomendación es no tener más de dos parámetros.
constructor (tweetListElement, notificationController, otraCosaController, otraCosaMásController)
Como buen desarrollador web, un constructor como el anterior debe hacer que te cuestiones tu proyecto. Tal vez la clase de este constructor está ejecutando demasiadas acciones y debes dividirlo mejor. Esta es la principal desventaja del patrón de inyección de dependencias, pues en un proyecto web en donde necesitamos una gran comunicación entre varios elementos, el patrón empieza a flaquear.
¿Cómo contrarrestar la desventaja del patrón de inyección de dependencias?
Para solucionar el problema que surge de la desventaja del patrón de inyección de dependencias, se ha creado otro patrón de diseño conocido como PubSub. Este patrón nos permitirá comunicar controladores y clases sin hacer que uno sea dependiente del otro. Es decir, no inyectaremos dependencias en un controlador para comunicarlo con otros. De hecho, el patrón PubSub evita que los controladores o clases se conozcan del todo. Para ello, usa la lógica de “tubo o bus de eventos”. Es decir, los datos y funciones que deben ser comunicadas se emiten primero a un tubo imparcial y es desde este tubo que el receptor tomará los datos, no del emisor mismo.
Puedes aprender más sobre este concepto en nuestros post sobre qué es PubSub y PubSub vs inyección de dependencias.
¿Quieres seguir aprendiendo?
Ahora que sabes cuál es la desventaja del patrón de inyección de dependencias, te invitamos a probar este y otros patrones en tus propios proyectos web. Para conocer más sobre la creación y el desarrollo de todo tipo de proyectos web, te recomendamos nuestro Desarrollo Web Full Stack Bootcamp, donde aprenderás la teoría y la práctica de este mundo para convertirte en un experto del desarrollo web en pocos meses. ¿Quieres seguir aprendiendo con nosotros? ¡Pide ahora más información!