Un piatto di spaghetti è indissolubilmente intrecciato, da qui il nome 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.[1][2]

Il suo nome deriva dal fatto che questi tipi di codice tendono ad assomigliare a un piatto di spaghetti, ovvero un mucchio di fili intrecciati ed annodati.

Spaghetti code è un esempio di anti-pattern.

Esempio

modifica

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

modifica
  1. ^ (EN) What is spaghetti code?, su stackoverflow.com, 28 ottobre 2010. URL consultato il 28 settembre 2016.
  2. ^ (EN) Spaghetti Code, su gnu.org, aprile/maggio 1992. URL consultato il 28 settembre 2016.

Voci correlate

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

📚 Artikel Terkait di Wikipedia

SpongeBob

Impact of Different Types of Television on Young Children's Executive Function, su Pediatrics. ^ (EN) Brown, Eryn, SpongeBob impairs little kids' thinking

Maggie Smith

Lily (Lily in Love), regia di Károly Makk (1984) Pranzo reale (A Private Function), regia di Malcolm Mowbray (1984) Camera con vista (A Room with a View)

Cane Chippiparai

ISBN 978-0-7566-6004-8. David Hancock, Sighthounds: their form, their function and their future, Ramsbury, Marlborough, The Crowood Press Ltd, 2012, pp

Teoria del complotto

Corriere della Sera, 14 luglio 2005. ^ Giry, Julien. A SPECIFIC SOCIAL FUNCTION OF RUMORS AND CONSPIRACY THEORIES: STRENGTHENING COMMUNITY’S TIES IN TROUBLED

Tè verde

devono essere bevute per non offendere il padrone di casa. Da Fang (Big Square) Prende il nome dal suo creatore, il monaco buddista Da Fang vissuto nel

Evgenij Evgen'evič Sluckij

Eventuelles, 1929 Tables for the Computation of the Incomplete Gamma Function and the Chi-Square Probability Distribution, 1950. Teorema di Slutsky Lemma di Slutsky

Radice quadrata inversa veloce

^ (EN) Charles McEniry, The Mathematics Behind the Fast Inverse Square Root Function Code (PDF), su daxia.com, 2007, p. 1. URL consultato il 13 febbraio

Secure Hash Algorithm

che va da 0 a L. Il fulcro dell'algoritmo SHA-1 è chiamato compression function ed è formato da 4 cicli di 20 passi cadauno. I cicli hanno una struttura