title: Spaghetti code
text: # Spaghetti code
  
  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.
  
  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.
  
  Ecco un esempio di codice equivalente scritto con uno stile di programmazione strutturato:
  
  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.
  
  