Funciona con

Logotipo Salesforce

Código Espagueti: una historia de amor-odio

Ah, los espaguetis, deliciosos cuando están cubiertos de marinara, pesto o salsa de pasta cremosa, pero horribles cuando tienen algo que ver con mis líneas de código. Este artículo está dedicado a mi (¿amor?) relación de odio con el código espagueti.

Espero que al final del artículo odies el código espagueti tanto como yo, y podamos consolarnos mutuamente de nuestra experiencia compartida. Si no es eso, al menos espero que hayas aprendido algo, ¡o quizás incluso te hayas reído!

En esta historia de amor-odio al Código Espagueti...

Empecemos, ¿qué es el código espagueti 🙄?

Es lo que ocurre cuando escribes código que no sigue unas buenas prácticas de desarrollo de software. Al final de este artículo, espero que quede claro qué es el código espagueti, o al menos qué aspecto tiene (y qué no hay que hacer).

El significado formal de código espagueti es lo que ocurre cuando tienes lo que se denomina dependencias profundas o amplias. Con esto lo que quiero decir es que tu código depende de demasiadas o muy pocas partes de tu aplicación para funcionar correctamente.

Pero hay muchas ideas diferentes de lo que constituye código espagueti. Creo que mi definición favorita procede de Alex Martelli: "El código espagueti es lo que ocurre cuando no obedeces las reglas de una correcta descomposición descendente".

Para quienes no estén familiarizados con el término "descendente", permíteme que cite a Wikipedia al respecto: "El diseño descendente, también conocido como diseño jerárquico, comienza definiendo módulos de alto nivel y sucesivamente submódulos de nivel inferior hasta que se definen rutinas individuales".

Esto significa que un trozo ideal de espagueti pasará de ser lo que está escrito actualmente, a lo que el código debería hacer, siguiendo estos pasos:

1) Identifica qué hace este trozo de espagueti.

2) Si lo que hace actualmente no es lo que debería hacer, reescríbelo para que haga lo que tiene que hacer (esta etapa puede dividirse en lo que necesitas que haga tu código).

3) Escribe el código.

4) Repite la operación hasta que todos los espaguetis hayan sido sustituidos por un código sin espaguetis.

Sin embargo, la mayoría de las veces, la gente simplemente se salta estas 3 y 4 y pasa directamente a la 2 o a la 1 (normalmente la 1), y entonces empieza a codificar como científicos locos sin ningún respeto por las prácticas de código limpio Unos meses más tarde acaban con lo que comúnmente se conoce como código espagueti.

¿Cómo identificar el código espagueti?

En primer lugar, si tu código parece un lío caliente difícil de seguir, probablemente ésa sea tu primera pista. Para códigos espagueti más difíciles de identificar, aquí tienes otras pistas:

  • Si editar tu código o depurarlo te causa una inmensa frustración, lo más probable es que se trate de código espagueti.
  • Si ningún desarrollador quiere trabajar contigo en un proyecto concreto o quiere revisar tu solicitud de relaciones públicas, lo más probable es que se trate de código espagueti
  • Si tu jefe tiene aleatoriamente ataques de ira contra ti, lo más probable es que escribas mucho código espagueti.

No te preocupes si alguno de esos ejemplos se aplica a tu caso, lo que importa es qué aspecto crees que tiene tu código espagueti: es probable que lo que ahora te parece que tiene mal aspecto, en realidad tenga mucho peor aspecto después de leer este artículo.

¿Qué aspecto tiene el código espagueti?

Esto depende del lenguaje en el que estés escribiendo y del framework/libs que se estén utilizando. Aquí mostraré un código espagueti escrito en JavaScript utilizando jQuery como ejemplo:

function KFCSecretMenu() { //constructor

this.getKrushers = function() {

} } $(document).ready(function(){ //event listener for DOM Ready $(‘.welcome’).click(function (){ //event listener for click on element with class name of welcome $(‘.menu-item’).addClass(‘active’); //class to be added if the submenu is opened.

$(‘.menu-item’).find(‘.description’).slideDown(); //sliding down effect for description text }) }); function MenuItemClicked (e) { var itemID = $(e.target).parent().attr(‘id’); //gets ID of parent menu item var description = $(e.target).next().text() KFCSecretMenu.getKrushers({‘itemID’:itemID,’description’:description}); //calling function below }

¿Seguimos? No, ¡es espagueti! 🕵️

Veremos qué hace que este trozo de código espagueti sea tan malo, qué lo hace más espagueti que otros y qué puedes hacer para arreglarlo. ¿Qué hace que el código espagueti sea tan malo? Creo que ésta es la lista más útil de lo que hace que el código espagueti sea lo que es: Funciones, métodos y variables duplicados o demasiado complejos Estructuras difíciles de seguir y/o no indentadas Funciones difíciles de seguir y/o largas Espacio en blanco difícil de leer Lógica difícil de seguir Falta de comentarios Estilos de codificación inusuales (se esfuerzan demasiado) Buenos nombres de variables.

También hay otras cosas que harán que tu código sea un caos, pero que no cuentan necesariamente como código espagueti: Algoritmos ineficaces Gran tamaño de archivo Software mal diseñado Falta de pruebas El código espagueti tiene un aspecto diferente en cada lenguaje, framework y librerías utilizados: lo que puede ser espagueti en uno, puede no serlo en otro. Eso es lo que hace difícil definir qué aspecto tiene el código espagueti, lo que tienes que hacer es pensar en lo que habría sido código espagueti para ti hace unos años: ¿cuáles eran los mayores problemas de tu código? Probablemente cometiste algunos de los errores de la lista anterior, así que empieza a comparar qué tenían de malo esos trozos de código del pasado e intenta tener presente esa lista mientras lees este artículo.

Así que has identificado tu código espagueti, ¿cómo tratarlo?

Algunas cosas importantes que hay que tener en cuenta antes de empezar a discutir cómo convertir nuestro trozo de espagueti... quiero decir de código en lo que debería ser:

Nota 1: Hay cientos (quizás miles) de maneras por ahí sobre cómo NO escribir tu código. Intento mantener esto lo más simple posible, el contexto de lo que escribo aquí es para aquellos con un conocimiento muy básico sobre cómo escribir código. En realidad, ¡te sorprendería lo que puedes hacer simplemente añadiendo algunos espacios en blanco y comentarios!

Nota 2: Es esencial que entiendas lo que estás haciendo antes de intentar arreglar tú mismo el código espagueti, ¡de lo contrario sólo conseguirás empeorarlo! Si no es así, vuelve a leer este artículo hasta que lo entiendas, y luego vuelve aquí.

Nota 3: En este momento estamos investigando qué es lo que hace que tus espaguetis estén desordenados, lo que sin embargo no estamos investigando es qué podría haberlo causado en primer lugar (y, por tanto, debería hacer que nos lo pensáramos dos veces antes de abrir nuestro editor).

¿Cuáles son las ventajas del código espagueti?

Nada. ¡Próximo punto!

¿Cómo evitar el futuro código espagueti?

Además de mudarte a Italia y que un italiano muy enfadado te golpee en la cabeza con un montón de espaguetis crudos cada vez que escribas una línea de código poco limpio, podrías probar estas cosas...

  • Una buena forma de evitar el código espagueti es que tus funciones y métodos sean cortos. Eso significa que una función sólo debe hacer lo que se supone que debe hacer, no hay necesidad de una función que haga 10 cosas distintas o que tenga 100 líneas: ¡elimina lo que no sea necesario!
  • Otro consejo para evitar el código espagueti es evitar que se cambie lo que ya se ha hecho -lo que quiero decir con esto es que debes intentar que no haya anidamiento profundo de bucles dentro de otros bucles, o en otras palabras: ¡no anides lo que no necesita anidarse!
  • Tampoco te olvides del formato del código, ¡el espacio en blanco y la sangría pueden hacer milagros con el código espagueti! Cuanto mejor se vea el código, más fácil será leerlo.
  • Retros - ¡revisa siempre lo que ha ido bien para poder hacer un seguimiento de ello y ponerlo en práctica la próxima vez!
  • Alternativamente, podrías mejorar tu codificación
  • Un último consejo cuando planifiques cómo quieres que sea tu código espagueti, intenta dibujar gráficos de lo que quieres que haga en lugar de escribir el código directamente en tu editor (eso significa que mires lo que tiene que hacer cada función antes de implementarla realmente). Si esto sale mal, da un paso atrás y vuelve a empezar.

Si sigues estas sencillas reglas, casi puedo garantizarte que lo que escribas no se convertirá en espaguetis, pero ¿qué sé yo? Puede que lo que tu tía llamaba espaguetis sea en realidad código espagueti disfrazado.

Reflexiones finales sobre el código espagueti

También podrías intentar abrazar a tus espaguetis, ¡amarlos como la única fuente de alegría de tu vida! Si eso no te funciona, existe este excelente GIF que simula la alternativa.

Dev meme sobre tareas y reuniones ingenieros sprint backlog review

Si todo lo demás falla, podrías mejorar tu capacidad de codificación. Pero, en serio, ¡eso debería ser lo último, lo último, lo último que deberías hacer!

TL;DV PARA REUNIONES
Conoce a tus Agentes de Reuniones AI
Acaba con el papeleo. Haz que cada reunión cuente. Los agentes de reuniones con IA de tl;dv automatizan la grabación, transcripción, resumen e integración en herramientas como CRM y plataformas de productividad. Impulsados por flujos de trabajo agénticos, simplifican tus procesos y transforman las reuniones en información procesable con precisión y control.

Capta y resume las opiniones de los clientes para descubrir necesidades y tendencias.

Captura las sesiones de formación y genera resúmenes o puntos destacados para futuras consultas.

Centraliza y organiza las ideas de las reuniones en una base de conocimientos.

Extrae información sobre la competencia de las reuniones para descubrir tendencias y estrategias.

Resume los comentarios o puntos de discusión de las revisiones de rendimiento 1:1.

Proporciona a los nuevos empleados resúmenes de las principales reuniones anteriores para que se pongan al día.

¿Llegas tarde a tu próxima reunión?
¡Envía tl;dv en su lugar!
  • Se une a tu reunión, ¡aunque tú no lo hagas!
  • Registra y transcribe en más de 30 idiomas diferentes.
  • Toma notas siguiendo tu estructura favorita.
  • Crea resúmenes de tus reuniones.
  • Actualiza automáticamente tus herramientas favoritas (CRM, Slack, Notion, etc).
  • Mejora los resultados de tus reuniones con los cuadros de mando de rendimiento.
¿Llegas tarde a la llamada de tu próximo cliente?
¡Envía tl;dv en su lugar!
  • Se une a tu reunión, ¡aunque tú no lo hagas!
  • Registra y transcribe en más de 30 idiomas diferentes.
  • Toma notas siguiendo tu estructura favorita. (Plantillas de ventas incluidas)
  • Crea resúmenes de tus reuniones.
  • Redacta correos electrónicos de seguimiento.
  • Actualiza automáticamente el CRM con los datos de la reunión
  • Mejora los resultados de tus reuniones con los cuadros de mando de rendimiento.