スパゲッティプログラミングについて詳しく解説

シンプルなスパゲッティ皿。
シンプルなスパゲッティ皿。

スパゲッティ プログラミングまたはスパゲッティ コードは、プログラミングで使用される軽蔑的な用語です。これらは、コードが不明確で、無条件ジャンプ ( 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 管理ルールのプログラミングを完全に組み合わせます。

プログラムの保守性への影響はマイナスです。

スパゲッティプログラミングについて詳しく解説
  1. رماز متشابك – arabe
  2. Спагети код – bulgare
  3. Codi spaghetti – catalan
  4. Špagetový kód – tchèque
  5. Spaghettikode – danois
  6. Spaghetticode – allemand

スパゲッティプログラミングについて詳しく解説・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。