Cómo Simplificar tu Codebase

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Las codebases grandes y heredadas a menudo sufren de dependencias enredadas, falta de límites modulares y archivos "barrel" monolíticos que agrupan muchos módulos. Esto hace que la codebase sea difícil de entender, modificar y escalar. En esta masterclass, exploraremos estrategias para "desenredar el barrel" y simplificar una codebase compleja para prepararla para la migración a una arquitectura de monorepo.

Cubriremos técnicas para:

- Analizar tu código en busca de dependencias cíclicas

- Herramientas para ayudar a refactorizar el código

- Establecer pautas de codificación y automatización para controlar la complejidad de la codebase en el futuro

This talk has been presented at Node Congress 2025, check out the latest edition of this JavaScript Conference.

Tally Barak
Tally Barak
35 min
17 Apr, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta masterclass se centra en los desafíos de trabajar con grandes codebases, como límites de módulos poco claros, repetición de código y flujos desordenados. El código muerto se identifica como un problema importante que añade desorden y carga cognitiva a los desarrolladores. El árbol de sintaxis abstracta (AST) se presenta como una herramienta para acceder sistemáticamente al código. Se recomienda TSmorf para encontrar y eliminar código muerto mediante la traversión y manipulación del AST. Las dependencias cíclicas se discuten como otro problema, y se sugiere MADGE como una herramienta para identificar y resolver referencias circulares. Los archivos barrel se presentan como un método para organizar el código y resolver referencias cíclicas. Se explica el proceso de reemplazar importaciones y eliminar llamadas vacías. Las conclusiones clave incluyen la importancia de una buena arquitectura en capas, eliminar código muerto, romper dependencias cíclicas y reducir archivos barrel.
Available in English: How to Simplify your Codebase

1. Understanding the Problem with Large Codebases

Short description:

Esta masterclass está dirigida a personas que trabajan en grandes bases de código. Los signos de una mala arquitectura incluyen límites de módulo poco claros, repetición de código y flujos desordenados. Estos problemas dificultan realizar cambios, ralentizan la velocidad de los desarrolladores y conducen a errores desconocidos.

Así que esta masterclass, chicos, está dirigida a personas que están trabajando en grandes bases de código. Y grandes bases de código que han estado alrededor durante algunos años y probablemente han sido trabajadas por múltiples desarrolladores podrían parecerse a algo que podría recordarte a algo que se ve aquí. Y luego vas a tu gran base de código y vas y haces un cambio menor que con suerte no debería hacer nada. Pero esto es lo que está sucediendo. Todo se bloquea. Tu CI está en rojo, tus pruebas están fallando, tal vez la aplicación no se compila y así sucesivamente.

Y el término técnico que describe esta situación se llama textura crappy. Y esto es una señal de que hay un problema con la arquitectura de tu aplicación. ¿Cuáles son las señales que vemos de mala arquitectura? La primera y creo que la más crítica es que no hay límites de módulo claros. No estamos seguros de lo que hace cada módulo, de qué es responsable, y así sucesivamente. Hay mucha repetición de código. Simplemente porque no está claro qué está haciendo qué, podrías encontrarte escribiendo el mismo código en diferentes lugares. Con suerte, funciona igual, pero es más probable que esté haciendo cosas diferentes. Flujos desordenados.

Si estás tratando de entender un flujo en el sistema, podrías encontrarte navegando a través de decenas de archivos y tratando de entender qué está llamando a qué, cómo va, dónde están los ifs y así sucesivamente. Y eso hace que sea muy difícil hacer cambios. Ralentiza la velocidad de los desarrolladores. Es difícil refactorizar. Si quieres hacer un cambio, incluso para intentar mejorar algo porque estás tratando de hacerlo un poco mejor, te encuentras afeitando yak y realmente no puedes hacer el cambio. Y eventualmente, te da una enfermedad de la que todos sufrimos, errores de los que no tienes idea de dónde vinieron.

2. Addressing the Problem of Dead Code

Short description:

La presión del tiempo, los requisitos cambiantes, la comprensión incompleta, la madurez de la tecnología y los factores humanos contribuyen al problema de las grandes bases de código. En lugar de arrancar todo y empezar desde cero, sugiero abordar problemas específicos. En esta masterclass, me centraré en el problema del código muerto, que añade desorden y carga cognitiva a los desarrolladores.

de la que todos sufrimos, errores de los que no tienes idea de dónde vinieron. ¿Por qué está sucediendo esto? ¿Cuáles son las razones? La primera, y creo que la más común es la presión del tiempo. Conoces el término de hagámoslo rápido y sucio. Puedo decirte que por muchos años de experiencia en software. Nunca es rápido y siempre es sucio, y generalmente trae una tecnología que toma mucho tiempo arreglar. Los requisitos cambian. Esto es normal. Esto es parte del flujo regular del desarrollo de software, que obtienes un nuevo requisito y luego cambia. Ya no necesitamos el anterior, pero tal vez no tengamos tiempo para venir y repensar toda la forma en que lo implementamos. Así que solo estamos parcheando el software con diferentes cosas en diferentes lugares diciendo, está bien, esto es lo que vamos a hacer.

Comprensión incompleta. Esto también está sucediendo. Cuando comienzas, hay una nueva característica. Tal vez todavía seas una empresa relativamente joven. No entiendes completamente qué va a ser la característica y cuáles son las obstrucciones que vamos a necesitar para dejarlo claro. La tecnología madura. Lo hemos visto. Estás trabajando en, comienzas con una cierta versión de, digamos, Node y luego crece y de repente tienes ESM y tienes async await y ese tipo de cosas, pero obviamente no tienes el tiempo para volver y refactorizar toda la base de código. Y la última cosa es, llamémoslo los factores humanos.

También los desarrolladores probablemente no nacen con todo el conocimiento para hacer las cosas de la manera correcta, para escribir el código perfectamente, y con el tiempo maduramos y vemos más y más cosas que sabemos cómo mejorar. Está bien, así que sí, tenemos una base de código problemática, Tali. ¿Qué sugieres hacer? ¿Deberíamos simplemente venir y arrancar todo y reescribir desde cero? Bueno, eso podría ser agradable, pero es muy probable que no puedas hacer eso. Así que en su lugar, déjame sugerir algo más. Mi nombre es Tali Barak. Soy arquitecto de software en Ubiquit y esta masterclass se llama Log Stock and Barrel. El nombre se revelará más tarde y está hablando sobre la reestructuración de grandes bases de código. El primer problema, voy a abordar tres problemas que pueden ayudarte a crear una mejor arquitectura para tu aplicación y el primero será sobre el código muerto. El código muerto es código que nunca se ejecuta. Existe en el sistema porque alguien lo puso allí hace cinco años o más y nadie ha notado que ya no se está utilizando. ¿Por qué es eso un problema? Porque de nuevo, esto es desorden.