Codigo espagueti

El código espagueti  es un programa mal diseñado, mal estructurado, confuso y difícil de entender , especialmente si contiene muchas declaraciones GOTO (especialmente saltos hacia atrás), excepciones y otras construcciones que degradan la estructura [1] . El anti -patrón de programación más común .

El código de espagueti se llama así porque el flujo del programa es como un plato de espagueti , es decir, tortuoso y enrevesado. A veces llamado " código canguro " ( kangaroo code ) debido a las muchas instrucciones de "salto".

Hoy en día, el término se aplica no solo a los casos de abuso de GOTO, sino también a cualquier código "multienlazado" en el que el mismo pequeño fragmento se ejecuta en un gran número de situaciones diferentes y realiza muchas funciones lógicas diferentes [1] .

El código espagueti generalmente ocurre:

no es el resultado de una ofuscación deliberada .

El código espagueti se puede depurar y ejecutar correctamente y con un alto rendimiento, pero es extremadamente difícil de mantener y desarrollar [1] . La edición de espaguetis para agregar nuevas funciones a veces conlleva un potencial tan grande para introducir nuevos errores que la refactorización (la principal cura para los espaguetis) se vuelve inevitable.

Ejemplo

El siguiente es un ejemplo de código espagueti en BASIC que realiza una acción simple: imprimir los números del 1 al 10 y sus cuadrados. Los ejemplos reales de código espagueti son mucho más complejos y crean más problemas de mantenimiento.

10 i = 0 20 i = i + 1 30 si i <= 10 luego ir a 70 40 si i > 10 luego ir a 50 50 imprimir "Programa completado". 60 fin 70 imprimir i: " al cuadrado = " : i * i 80 ir a 20

El mismo código, escrito en BASIC al estilo de la programación estructurada :

for i = 1 to 10 print i: " squared = " : i * i next i print "Programa completado".

El mismo código de estilo funcional usando el método de iteración, escrito en Ruby :

( 1 .. 10 ) . cada { | yo | pone " #{ i } \t squared = #{ i ** 2 } " } pone "Programa completado".

Conceptos relacionados

Por analogía con el "código espagueti", los programadores han ideado algunos conceptos más que aún no son generalmente aceptados.

  • El código Ravioli es un código que consta de una gran cantidad de componentes independientes, y para comprender cómo corregir un error en la unión de los componentes, uno debe "atravesar" las interfaces entre componentes.
  • El código Baklava o el código de lasaña es un código que tiene demasiadas (para una tarea determinada) capas de abstracción.
  • El código Katamari es un código que alguna vez estuvo limpio, pero en el proceso de desarrollo se cubrió con funcionalidad, como un "katamari" de un juego de Playstation .

Véase también

Notas

  1. 1 2 3 John Vlissides, Kyle Brown, Gerard Meszaros Antipatrones: la guía de supervivencia. Código de espagueti Archivado el 27 de enero de 2021 en Wayback Machine .

Enlaces