Spaghetti code
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Spaghetti.jpg/220px-Spaghetti.jpg)
Spaghetti code è un termine dispregiativo per il codice sorgente di quei programmi per computer che hanno una struttura di controllo del flusso complessa e/o incomprensibile, con uso esagerato ed errato di go to, eccezioni, thread e altri costrutti di branching (diramazione del controllo) non strutturati.[1][2]
Il suo nome deriva dal fatto che questi tipi di codice tendono a assomigliare a un piatto di spaghetti, ovvero un mucchio di fili intrecciati ed annodati.
Spaghetti code è un esempio di anti-pattern.
Esempio
Il seguente programma è un esempio banale di spaghetti code in BASIC. Esso stampa su schermo la sequenza di numeri da 1 a 10 e il loro quadrato. Si noti come le istruzioni di "GOTO" introducano una dipendenza dai numeri di riga del programma, e come il flusso di esecuzione salti in maniera imprevedibile da una zona all'altra. In pratica, nei programmi reali le occorrenze di spaghetti code sono ben più complesse e possono aumentare notevolmente i costi di manutenzione di un programma.
10 dim i 20 i = 0 30 i = i + 1 40 if i <= 10 then goto 70 50 print "Programma terminato." 60 end 70 print i & " al quadrato = " & i * i 80 goto 30
Ecco un esempio di codice equivalente scritto con uno stile di programmazione strutturato:
function square(i) square = i * i end function dim i for i = 1 to 10 print i & " al quadrato = " & square(i) next print "Programma terminato."
Anche questo programma esegue salti, ma in questo caso si tratta di salti predicibili e formalizzati. Questo perché il ciclo for e le funzioni definiscono flussi di controllo standardizzati, mentre le istruzioni goto incoraggiano flussi di controllo arbitrari.
Note
- ^ (EN) What is spaghetti code?, su stackoverflow.com, 28 ottobre 2010. URL consultato il 28 settembre 2016.
- ^ (EN) Spaghetti Code, su gnu.org, aprile/maggio 1992. URL consultato il 28 settembre 2016.
Voci correlate
- Codice sorgente
- Programmazione strutturata
Collegamenti esterni
- (EN) Denis Howe, Spaghetti code, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
- (EN) Go To Statement Considered Harmful. La classica descrizione degli spaghetti code fatta da Edsger Dijkstra.
- (EN) The Daily WTF - Curious Perversions In Information Technology, su thedailywtf.com.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)