Spaghetti code

Da Wikipedia, l'enciclopedia libera.
Un piatto di spaghetti è indissolubilmente intrecciato, da qui il nome spaghetti code.

Spaghetti code è un termine dispregiativo per 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.

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[modifica | modifica sorgente]

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:

 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.

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]