Código Espagueti: una historia de amor-odio

Ah, los espaguetis, deliciosos cuando están cubiertos de salsa marinara, pesto o salsa 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 incluso que te hayas reído!

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

Así que empecemos, ¿qué es el código espagueti 🙄?

Es lo que ocurre cuando se escribe código que no sigue las prácticas correctas 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 se debe 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 viene de Alex Martelli: "El código espagueti es lo que ocurre cuando no se obedecen las reglas de una correcta descomposición descendente".

Para quienes no estén familiarizados con el término "descendente", permítanme citar 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 definir 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 se puede dividir en lo que necesitas que haga tu código).

3) Escribe el código.

4) Repita 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 va directamente a la 2 o a la 1 (normalmente la 1), y entonces empiezan a codificar como científicos locos sin ninguna consideración por las prácticas de código limpio Unos meses después 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 difícil de seguir, esa es probablemente tu primera pista. Para identificar códigos espagueti más difíciles, 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 con usted en un proyecto concreto o revisar su solicitud de relaciones públicas, lo más probable es que se trate de código espagueti.
  • Si tu jefe tiene ataques de ira aleatorios 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 cómo crees que se ve tu código espagueti - es probable que lo que ahora te parece que se ve mal, en realidad se vea mucho peor 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í, voy a mostrar un poco de código espagueti escrito en JavaScript usando 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 de verdad! 🕵️

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 esta 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 (esforzándose demasiado) Buenos nombres de variables.

También hay otras cosas que harán que tu código sea un desastre, pero que no cuentan necesariamente como código espagueti: Algoritmos ineficientes Gran tamaño de archivo Software mal diseñado Falta de pruebas El código espagueti se ve diferente en cada lenguaje, framework y librerías usadas - lo que puede ser espagueti en uno puede no serlo en otro. Eso es lo que hace que sea 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 con tu código? Probablemente cometiste algunos de los errores de la lista anterior, así que empieza a comparar lo que era malo en esas piezas de código del pasado y trata de mantener esa lista en mente mientras lees este artículo.

Ya ha identificado su código espagueti, ¿cómo solucionarlo?

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

Nota 1: Hay cientos (tal vez miles) de maneras por ahí sobre cómo NO escribir el código. Estoy tratando de mantener esto lo más simple posible, el contexto de lo que estoy escribiendo aquí es para aquellos con un conocimiento muy básico sobre cómo escribir código. Te sorprendería lo que puedes hacer simplemente añadiendo espacios en blanco y comentarios.

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

Nota 3: Ahora mismo 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 lo 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. ¡Siguiente 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 manera de evitar el código espagueti es mantener las funciones y métodos 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 diferentes 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 hay que intentar que no haya anidamiento profundo de bucles dentro de otros bucles, o en otras palabras: ¡no anidar lo que no necesita ser anidado!
  • No te olvides tampoco del formato del código: ¡el espacio en blanco y la sangría pueden hacer milagros con el código espagueti! Cuanto más bonito sea el código, más fácil será de leer.
  • Retrospectivas: revisa siempre lo que ha ido bien para poder hacer un seguimiento y aplicarlo la próxima vez.
  • También puede mejorar su 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 qué 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 yo qué sé. A lo mejor lo que tu tía llamaba espaguetis es en realidad código espagueti disfrazado.

Reflexiones finales sobre el código espagueti

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

Dev meme sobre tareas y reuniones ingenieros sprint backlog review

Si todo lo demás falla, puedes 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 empresas
tl;dv le ayuda (por fin) a obtener valor de las reuniones en toda la organización. Grabe, transcriba, resuma, genere y automatice información valiosa sobre las reuniones para usted y su organización. Configúrelo en cuestión de minutos.
Grabaciones y transcripciones ilimitadas
Resúmenes de IA
Pregunte a tl;dv AI
Funciona en más de 30 idiomas
Informes de IA para varias reuniones
+5000 integraciones

tl;dv Blog

Suscríbase a nuestros blogs

Suscríbase y manténgase al día con los últimos consejos y noticias sobre Reuniones, Ventas, Customer Success, Productividad y Cultura de trabajo.