Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Spaghetti code - Teknopedia
Spaghetti code - Teknopedia
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 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 wikitesto]

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 | modifica wikitesto]
  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 | modifica wikitesto]
  • Codice sorgente
  • Programmazione strutturata

Collegamenti esterni

[modifica | modifica wikitesto]
  • (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.
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Spaghetti_code&oldid=135889931"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022