Probablemente el antipatrón arquitectónico más infame en el desarrollo frontend es la Big Ball of Mud. El término Gran Bola de Barro se aplica a sistemas que no tienen una estructura u organización modular discernible. El código base ha crecido de forma orgánica y caótica, convirtiéndose en una pesadilla de mantenimiento. Es una situación en la que se encuentran muchos desarrolladores, especialmente cuando se les presiona mucho para cumplir con los plazos y desarrollar un gran volumen de funciones.
De eso trata el artículo actual: el antipatrón Big Ball of Mud con un ejemplo tomado del desarrollo frontend, por qué es tan común, cuándo se convierte en un problema y cómo abordarlo.
La Gran Bola de Barro es un sistema con límites arquitectónicos mal definidos. Dentro de tales sistemas, el código se enreda y se acopla mucho, por lo que mantener o ampliar el proyecto se vuelve problemático. Con el tiempo, a medida que se agregan más funciones sin prestar atención al diseño general, se vuelve cada vez más difícil trabajar con el código. Sin estructura, realizar cambios en una parte del sistema con demasiada facilidad daña otras partes, introduciendo errores sin darse cuenta que elevan aún más el nivel de complejidad del desarrollo.
En una Gran bola de barro, a menudo verás las siguientes características:
Clara separación de preocupaciones de la NOAA; La lógica empresarial, la interfaz de usuario y la recuperación de datos están entrelazadas. Acoplamiento flojo de NOAA; los componentes están entrelazados y, por lo tanto, es difícil aislar los cambios. modularidad de la NOAA; cada parte del sistema depende de todas las demás partes. Variables globales de la NOAA o estados compartidos con efectos secundarios impredecibles.
La gran bola de barro es un resultado común de la alta presión para realizar entregas rápidas sin la debida atención a la arquitectura. Al comienzo de un proyecto, los desarrolladores suelen tener prisa por crear funciones lo más rápido posible, sin dedicar mucho tiempo a una planificación adecuada. Esto conduce al crecimiento del código base en todas direcciones con la inserción de nueva lógica dondequiera que pueda caber. Con el tiempo, la refactorización se retrasa o se ignora en favor de incluir más funciones y la arquitectura se deteriora.
Otros factores que contribuyen a este antipatrón incluyen:
Echemos un vistazo más de cerca a cómo se vería la gran bola de barro en un proyecto frontend promedio.
Aquí hay un ejemplo abstracto del antipatrón Big Ball of Mud en la arquitectura front-end. Considere un pequeño proyecto de React que se ha convertido en un caos durante algún tiempo.
/src /components /Header.js /Footer.js /Sidebar.js /MainContent.js /UserProfile.js /utils /api.js /constants.js /styles /globalStyles.css /App.js /index.js
import React, { useState, useEffect } from 'react'; import { fetchUserData, updateUserProfile } from './utils/api'; import './styles/globalStyles.css'; const UserProfile = () => { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { fetchUserData() .then((data) => { setUser(data); setLoading(false); }) .catch((error) => console.error('Error fetching user data:', error)); }, []); const handleUpdate = () => { updateUserProfile(user) .then(() => alert('Profile updated!')) .catch((error) => console.error('Error updating profile:', error)); }; if (loading) returnLoading.; return (); }; export default UserProfile;{user.name}
Este código enredado e interdependiente es difícil de escalar y mantener, que es lo que es una gran bola de barro.
Es posible que un proyecto que presenta este tipo de arquitectura no presente signos aparentes de problemas de inmediato. Pero a medida que el proyecto crece, también lo hacen los problemas que se acumulan unos sobre otros:
Cuanto más anudado se vuelve, más difícil es desenredarlo. Por supuesto, se trata simplemente de la espiral viciosa de una deuda técnica creciente y una productividad cada vez menor.
Para evitar la gran bola de barro, se deben inculcar buenos hábitos arquitectónicos desde el principio y aplicarlos rigurosamente durante el proceso de desarrollo. A continuación se presentan algunas estrategias.
Arquitectura modular: División clara de su código en módulos lógicos con límites de responsabilidad. Por ejemplo, las preocupaciones se pueden separar según la obtención de datos, la lógica empresarial y la representación de la interfaz de usuario.
Abstracciones: Llamadas API abstractas y gestión de datos a través de servicios o enlaces de modo que estas preocupaciones se abstraigan de sus componentes. Esto ayudará a desacoplar el código y facilitará el manejo de los cambios en su API.
Límites del módulo: Debe haber un límite bien definido entre los componentes. En lugar de tener todos los componentes ubicados en una carpeta, cree carpetas separadas para una función o dominio.
Gestión del estado global: Utilice bibliotecas como Redux, MobX o la API Context de React para la gestión del estado compartido entre componentes. Esto reduce en gran medida la necesidad de que un componente administre el estado por sí mismo.
Refactorización: Refactorización periódicamente. No permita que el proyecto llegue a una etapa en la que ya sea absolutamente imposible de manejar; aborde estas inquietudes mientras mantiene limpia la base del código.
Si tu proyecto ya se ha convertido en una gran bola de barro, hay esperanza. El remedio es refactorizar el código base poco a poco, integrando los principios arquitectónicos siempre que sea posible. Empezar por:
En resumen, Big Ball of Mud es un antipatrón muy común que causa muchos problemas en proyectos frontend. La introducción de una arquitectura modular, la separación de preocupaciones y la refactorización regular son definitivamente pasos que mantendrían el caos introducido por este patrón fuera de su código base, haciéndolo más limpio y manejable.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3