
スパゲッティ プログラミングまたはスパゲッティ コードは、プログラミングで使用される軽蔑的な用語です。これらは、コードが不明確で、無条件ジャンプ ( Goto を参照) 、全方向の例外、複雑なイベント処理、およびさまざまなスレッドを過剰に使用するプログラムについて説明します。実際、スパゲッティ プログラミングでは、プログラムの一部が誰に、何を、どのように制御されているかを判断できないものはすべて記述されます。
この概念は、(制御フローだけでなく)データフローレベルにも当てはまります。また、コードが強結合を過度に使用するプログラムについても説明します。
スパゲッティプログラミングはアンチパターンの一例です。
スパゲッティ制御フローの例
gotoステートメント(またはそれに相当するステートメント) は、多くの場合、スパゲッティ コードの生成を担当します。 BASICやアセンブラなどの言語でよく使用されます (ただし、後者の場合は無条件分岐が避けられません)。次の例は、1 ~ 10 の整数のリストとその平方を表示するもので、BASIC のスパゲッティ コードの例です。
10 i = 0 20 i = i + 1 30 I <> 11 THEN GOTO 80 40 IF i = 11 THEN GOTO 60 50後藤20 60 PRINT 「プログラムが終了しました。」 70エンド 80 PRINT i & " 2 乗 = " & i * i 90後藤20
構造化プログラミングの原則をより尊重した次のプログラムでも同じ結果が得られます。
10 FOR i = 1 ~ 10
20 PRINT i & " 2 乗 = " & i * i
30次へ
40 PRINT 「プログラムが終了しました。」
50エンド

スパゲッティ データ フローの例
10インチ:整数 20アウト:整数 30 40手続き広場 50アウト=イン*イン 60終了手順
構造化プログラミングの原則をより尊重した次のプログラムでも同じ結果が得られます。
10関数平方( in : INTEGER ): INTEGER 30平方=インチ*インチ 20エンド機能
Web開発の事例
2000 年代の Web 開発では、スパゲッティ プログラミングの発作に到達しました。複数の言語、複数のフロー ロジック、管理ルールと HMI プログラミングの混合がすべて同じプログラム内にありました。たとえば、ASP または ASPX Web ページの場合は次のようになります。
- 最大 5 つのプログラミング言語 (html + javascript + ASP スクリプト + vbscript + CSS)
- プログラムを実行するための 2 つのロジック (シーケンシャルおよびイベント駆動)。
- ビジネス管理ルールと技術的な HMI 管理ルールのプログラミングを完全に組み合わせます。
プログラムの保守性への影響はマイナスです。

