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.

Note

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.

Spaghetti code will hurt your process and scalability. WP Agency

electronics Physical version of spaghetti code devRant

Spaghetti Code vs. Structured Code Cal Lab Solutions

Spaghetti code

What Is Spaghetti Code How To Avoid And Fix Best Guide 2024