Código spaghetti

De Wikipedia, la enciclopedia libre
(Redirigido desde «Código espagueti»)
Saltar a: navegación, búsqueda

El código spaghetti es un término peyorativo para los programas de computación que tienen una estructura de control de flujo compleja e incomprensible. Su nombre deriva del hecho que este tipo de código parece asemejarse a un plato de espaguetis, es decir, un montón de hilos intrincados y anudados.

Tradicionalmente suele asociarse este estilo de programación con lenguajes básicos y antiguos, donde el flujo se controlaba mediante sentencias de control muy primitivas como goto y utilizando números de línea. Un ejemplo de lenguaje que invitaba al uso de código spaghetti es el QBasic de Microsoft en sus primeras versiones.

Evolución de los lenguajes de programación

En los años 60 solo se podía definir el flujo de un programa a base de poner if's anidados y variables booleanas para decidir la lógica. Mas adelante ya se podían escribir funciones, de lo mas general a lo mas especifico y en la actualidad con la programación orientada objetos hay conceptos como la modularidad, abstracción, encapsulamiento, desacoplamiento, herencia hay herramientas y conceptos mas que suficientes como para evitar escribir este tipo de código.

Refactorización
No hay nada malo en escribir código spaghetti inicialmente si ésto facilita la comprensión del problema, lo incorrecto es considerar el código como acabado dejandolo de ésta forma. Lo correcto es iterar sobre varios repasos del código usando lo que se conoce como refactorización. Las modernos entornos de programación como Eclipse o Visual Studio incluso ya incorporan funciones automáticas que facilitan esta tarea.

1. De código spaghetti a programación funcional

Se pude dar una comparación con las reglas básicas del periodismo de como escribir una noticia:
Éstas indican que en el titular de la noticia tiene que mostrar la información mas importante, a continuación entrar en detalle en el primer párrafo y despues desglosar en los apartados subsequentes.
Así pues en el main del programa debe haber las funciones mas generales y cada una de ellas tiene que llamar a continuación a funciones mas especificas
Con "refactorizar - extraer método" se puede realizar automaticamente cada rama de los if's del código spagethis se convierta en una función, mejorando mucho la visibilidad.

2. de programación funcional a programación orientada a objetos.

Una vez se tienen las funciones claramente visibles es posible identificar cuales conforman una responsabilidad común y no entrelazada con el resto del código y por tanto es posible separarlas en objetos diferentes que ya tendran los métodos y propiedades (que pueden ser privados, no visibles, desde el resto del código).

Conclusión

En conclusión con unos buenos hábitos de programación y con pasos de refactorización se puede conseguir un código limpio y legible que beneficia a la hora de realizar pruebas y mantenimiento del sistema.