El Medio Desordenado — Navegando la Complejidad en Aplicaciones React Grandes

Rate this content
Bookmark

El proyecto comenzó de maravilla: el equipo estaba motivado, avanzando rápidamente y lanzando funciones antes de lo previsto. Pero poco a poco, la complejidad se fue infiltrando. Ahora, implementar pequeños cambios lleva una eternidad, la deuda técnica se está acumulando a un ritmo alarmante y todos están perdiendo la confianza de que el proyecto se completará alguna vez. Bienvenidos al medio desordenado.


Tomando ejemplos de proyectos reales que se lanzaron demasiado tarde, exploraremos los síntomas y las causas de la complejidad en las aplicaciones React grandes, y compartiremos consejos y estrategias para lidiar con ella antes de que se apodere de tu base de código.

FAQ

La gestión de la complejidad en grandes aplicaciones React se refiere a abordar y simplificar cualquier aspecto que haga que el sistema sea más difícil de cambiar o de entender. Maxi Ferreira destaca que la complejidad tiende a crecer exponencialmente en los proyectos, por lo que es crucial encontrar estrategias para manejarla efectivamente.

Las tres estrategias propuestas por Maxi Ferreira incluyen la composición de componentes, el uso de módulos profundos y la reducción de la carga cognitiva. Estas técnicas ayudan a hacer que los sistemas sean más fáciles de cambiar y entender, abordando directamente la complejidad de grandes proyectos.

La composición de componentes permite una mayor flexibilidad al definir el contenido de los componentes a través de componentes hijos en lugar de usar múltiples props. Esto simplifica los componentes y los hace más fáciles de modificar sin añadir complejidad adicional a la interfaz del componente.

Un módulo profundo en React es un componente que ofrece una funcionalidad considerable a través de una interfaz simple, manteniendo su complejidad interna bien encapsulada y no expuesta al resto del sistema. Esto equilibra el coste y el beneficio, simplificando la interacción con el componente sin sacrificar su capacidad.

Reducir la carga cognitiva implica minimizar la cantidad de información que los desarrolladores deben retener para realizar cambios. Esto se puede lograr mediante la implementación de interfaces claras, el uso de nombres de variables descriptivos, la documentación adecuada de decisiones importantes y la simplificación de la lógica de funciones complejas.

Es crucial controlar la evolución de la complejidad para asegurar que las soluciones y abstracciones iniciales sigan siendo efectivas ante los problemas actuales. Sin un control adecuado, la complejidad puede crecer de manera descontrolada y hacer que el sistema sea más difícil de modificar y entender.

Maxi Ferreira
Maxi Ferreira
10 min
15 Nov, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Gestionar la complejidad en las aplicaciones React grandes es un desafío, ya que tiende a crecer exponencialmente con el tiempo. La composición de componentes es una técnica clave que permite flexibilidad en las aplicaciones React, pero demasiada composición puede hacer que los componentes sean más difíciles de usar. Gestionar la complejidad y reducir la carga cognitiva es crucial, y estrategias como controlar la evolución de la abstracción y minimizar la información necesaria para cambios simples pueden ayudar. La simplicidad es difícil, pero importante para frenar el crecimiento de la complejidad.

1. Gestión de la complejidad en grandes aplicaciones React

Short description:

Hola React Summit, mi nombre es Maxi Ferreira y hoy quiero compartir con ustedes algunas de mis reflexiones sobre la gestión de la complejidad en grandes aplicaciones React. A menudo imaginamos que la complejidad crece linealmente con el tiempo, pero tiende a crecer exponencialmente. Definiré la complejidad como cualquier cosa que haga que el sistema sea más difícil de cambiar o entender. Compartiré mis tres estrategias y técnicas favoritas para ayudarles a manejar esta creciente complejidad en grandes proyectos React.

Hola React Summit, mi nombre es Maxi Ferreira y hoy quiero compartir con ustedes algunas de mis reflexiones sobre uno de mis temas favoritos, que es la gestión de la complejidad en grandes aplicaciones React. Pero antes de empezar, imaginemos el viaje de cualquier gran proyecto. Podríamos imaginar que va a ser algo así, vamos a hacer progresos constantes con el tiempo hasta que finalmente llegamos a la meta, lanzamos a producción y salimos a celebrar con nuestro equipo. En realidad, sin embargo, es mucho más probable que sea algo así. Las cosas se complican en el medio. Las características ahora tardan una eternidad en lanzarse, el dev técnico se acumula muy rápidamente y la meta parece alejarse cada día más. La razón de que esto suceda es que a menudo imaginamos que la complejidad crece linealmente con el tiempo. Cuanto más progreso hacemos, más crece la complejidad del código, y eso es algo que esperamos. Pero más a menudo que no, la complejidad tiende a crecer exponencialmente. Así que cuando estamos a mitad de camino en el proyecto, podemos ver que la complejidad no está disminuyendo. Puede resultar bastante abrumador.

Para el propósito de esta charla, vamos a definir la complejidad como cualquier cosa que haga que el sistema sea más difícil de cambiar o más difícil de entender. Lo que me gusta de esta definición es que podemos invertirla y obtenemos exactamente lo que necesitamos hacer para lograr la simplicidad, que es hacer que las cosas sean fáciles de cambiar y más fáciles de entender. Así que hoy quiero compartir con ustedes mis tres estrategias y técnicas favoritas para ayudarles a manejar esta creciente complejidad en grandes proyectos React, que espero que sean útiles, especialmente si están en medio del caos de su proyecto en este momento

2. Composición de Componentes en React

Short description:

La composición de componentes permite flexibilidad en las aplicaciones de React. Al descomponer un componente grande en otros más pequeños, podemos hacer cambios sin agregar numerosas props. Sin embargo, demasiada composición puede dificultar el uso de un componente.

ahora. La primera es la composición de componentes. ¿A qué me refiero con esto? Aquí tenemos un componente de tarjeta de ubicación que toma un par de props y renderiza esta hermosa tarjeta que vemos a la derecha. Se ve bastante bien en realidad y es definitivamente simple y fácil de usar. El problema con este componente es que no es muy flexible, por lo que si quieres hacer un cambio simple como ocultar ese botón de agregar a favoritos que vemos allí en la parte inferior derecha, entonces nuestra única opción es agregar otra prop. Eso no está tan mal. Es solo una prop extra y el componente sigue siendo bastante simple y fácil de usar. Pero ahora tenemos un nuevo requisito. También queremos hacer un cambio en la etiqueta del botón en algunas partes de la aplicación. Bueno, supongo que podemos agregar otra prop para eso. Y esto todavía está bien. Pero tenemos que tener cuidado aquí porque ahora abrimos la puerta para personalizar cualquier cosa en este componente a través de su interfaz. Entonces, ¿adivina qué va a pasar la próxima vez que se le pida a alguien que cambie el color del botón en alguna parte de la aplicación? Van a agregar otra prop. Podemos ver cómo esto puede salirse de control bastante rápido.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced Conference 2021React Advanced Conference 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
Los sistemas de diseño buscan aportar consistencia al diseño de una marca y hacer que el desarrollo de la interfaz de usuario sea productivo. Las bibliotecas de componentes con una API bien pensada pueden facilitar esto. Pero, ¡a veces una elección de API puede accidentalmente sobrepasar y ralentizar al equipo! Hay un equilibrio allí... en algún lugar. Exploremos algunos de los problemas y posibles soluciones creativas.
Construir un Sistema de Diseño con React y Tailwind CSS
React Summit 2022React Summit 2022
27 min
Construir un Sistema de Diseño con React y Tailwind CSS
Top Content
Tailwind CSS, con su enfoque de utilidad primero, es conocido por acelerar el proceso de desarrollo. Combinándolo con el poder de React, veamos cómo puedes construir un sistema de diseño personalizado para tu proyecto para acelerarlo aún más, hacerlo escalable y también fácil de mantener.
Caminando en la línea entre la flexibilidad y la consistencia en las bibliotecas de componentes
React Summit 2022React Summit 2022
27 min
Caminando en la línea entre la flexibilidad y la consistencia en las bibliotecas de componentes
Los sistemas de diseño tienen como objetivo brindar consistencia al diseño de una marca y hacer que el desarrollo de la interfaz de usuario sea productivo. Las bibliotecas de componentes con una API bien pensada pueden hacer que esto sea muy fácil. Pero, ¡a veces una elección de API puede sobrepasarse accidentalmente y ralentizar al equipo! Hay un equilibrio ahí... en algún lugar. Vamos a explorar algunos de los problemas y posibles soluciones creativas.
Descubre si tu sistema de diseño es mejor que nada
React Summit 2022React Summit 2022
20 min
Descubre si tu sistema de diseño es mejor que nada
Construir un sistema de diseño no es suficiente. Tu equipo de desarrollo debe preferirlo sobre los componentes individuales y las bibliotecas de terceros. De lo contrario, todo el esfuerzo es una pérdida de tiempo. Aprende cómo utilizar el análisis de código estático para medir si tu sistema de diseño supera a la competencia interna y formas basadas en datos para mejorar tu posición.
Dilemas de los diálogos y travesuras modales: Un análisis profundo de las ventanas emergentes
JSNation 2023JSNation 2023
10 min
Dilemas de los diálogos y travesuras modales: Un análisis profundo de las ventanas emergentes
Nuestros sistemas de diseño comúnmente incluyen componentes que se muestran encima de otro contenido: tooltips, date pickers, menús y enseñanza de la interfaz de usuario, por nombrar solo algunos. Las actualizaciones propuestas para la plataforma web están a punto de hacer que construir estos sea mucho más fácil. Es posible que ni siquiera necesites JavaScript. En esta charla, aprenderás todo sobre el próximo atributo 'popover', la modalidad y la capa superior.
Estilo Seguro para Paquetes de Componentes React: Vanilla Extract CSS
React Advanced Conference 2023React Advanced Conference 2023
19 min
Estilo Seguro para Paquetes de Componentes React: Vanilla Extract CSS
Desbloquea el poder del estilo seguro en paquetes de componentes React con Vanilla Extract CSS. Aprende cómo escribir estilos escalables y mantenibles sin esfuerzo, aprovechando CSS-en-Typescript. Descubre la integración perfecta de Vanilla Extract CSS y lleva tus componentes React al siguiente nivel.

Workshops on related topic

Desarrollo Rápido de UI en React: Aprovechando Bibliotecas de Componentes Personalizadas y Sistemas de Diseño
React Advanced Conference 2022React Advanced Conference 2022
118 min
Desarrollo Rápido de UI en React: Aprovechando Bibliotecas de Componentes Personalizadas y Sistemas de Diseño
Workshop
Richard Moss
Richard Moss
En este masterclass, recorreremos los enfoques más efectivos para construir componentes de UI escalables que mejoren la productividad y felicidad del desarrollador :-) Esto implicará una combinación de ejercicios prácticos y presentaciones, que cubrirán los aspectos más avanzados de la popular biblioteca styled-components, incluyendo la tematización e implementación de utilidades styled-system a través de props de estilo para un desarrollo rápido de UI, y culminando en cómo puedes construir tu propia biblioteca de componentes personalizada y escalable.
Nos enfocaremos tanto en el escenario ideal, donde trabajas en un proyecto nuevo, como en tácticas para adoptar incrementalmente un sistema de diseño y enfoques modernos para el estilo en una base de código existente con algo de deuda técnica (¡que suele ser el caso!). Al final del masterclass, deberías sentir que comprendes los compromisos entre diferentes enfoques y sentirte seguro para comenzar a implementar las opciones disponibles para avanzar hacia el uso de una biblioteca de componentes basada en un sistema de diseño en la base de código en la que trabajas.
Prerrequisitos: - Familiaridad y experiencia trabajando en grandes bases de código de React- Una buena comprensión de los enfoques comunes para el estilo en React