スパゲッティコード 【spaghetti code】 スパゲッティプログラム / spaghetti program

概要

スパゲッティコード(spaghetti code)とは、コンピュータプログラムの状態を表す俗語の一つで、命令の実行順が複雑に入り組んでいたり、遠く離れた関連性の薄そうなコード間で共通の変数が使われるなど、処理の流れや構造が把握しにくい見通しの悪い状態になっているプログラムのこと。

処理の流れが脈絡なくコード上のあちこちに飛んでしまっており、どこがどこに続いているのか極めて分かりにくくなっている様子を、皿に盛られて絡まりあうスパゲッティに例えた表現である。

スパゲッティコードが生じる典型的な要因はいくつかあり、goto文のような実行位置を任意に変更できる制御文を乱用したり、変数などのシンボルの通用範囲(スコープ)がむやみに広く、コード上のあちこちで定義・代入・参照などをっていたり、繰り返し制御文やサブルーチンなどで処理をまとめず似たような処理を冗長に何度も記述していたり、何をするためのものなのか分からない変数名関数名を付けてしまうといったプログラムの書き方(の悪い癖)がよく挙げられる。

スパゲッティコードであっても仕様や要件を満たしていたり動作に支障がない場合もあるが、可読性保守性が低いため、トラブルが生じたときに実行順を追って問題個所や原因を特定したり修正するのが困難になってしまう。コードの部分的な修正や機能の追加なども困難で、修正によって他の個所に予期せぬ影響を与えてバグの原因になることも多い。

プログラムをスパゲッティ化させないためには、制御構文などを適切に用いて処理の流れを見通しやすくしたり(構造化プログラミング)、関数サブルーチンモジュールクラスなどを用いて適切に機能を分割・整理するといったことを心がける必要がある。

また、すでにスパゲッティ化してしまったプログラムに対しては、機能や動作を保ったまま新たな別のプログラムに書き換えるリファクタリングrefactoring)をうことで、その後の生産性が向上する場合がある。

(2018.9.21更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる