Spaghetti code

termine dispregiativo
Versione del 25 giu 2009 alle 10:47 di MauritsBot (discussione | contributi) (Bot: Modifico: de:Spaghetticode; modifiche estetiche)

Spaghetti code è un termine dispregiativo per quei programmi per computer che abbiano 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.

Un piatto di spaghetti è indissolubilmente intrecciato, da qui il nome spaghetti code.

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 impredicibile 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:

dim i
for i = 1 to 10
    print i & " al quadrato = " & square(i)
next
print "Programma terminato."

function square(i)
    square = i * i
end function

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.

Voci correlate

Collegamenti esterni