スパゲティコード
スパゲティコードとは、プログラムのソースコードが複雑に入り組んでおり、解読が困難であるソースコードを指します。名前の由来は、料理のスパゲティの様にぐちゃぐちゃに絡まっていることから来ています。
スパゲティコードは、ある特定の処理の書き方が煩雑である、処理が不意に全く別の位置に移ることがある、二つ以上の分離可能な機能が分けられていない等の特徴があり、こうしたソースコードによって処理の流れやプログラムの構造が把握しにくくなっています。作文で例えると、前後の文脈が合わず文章の意味や作成者の意図の読解が困難なイメージです。
このようなソースコードが出来る理由は、goto命令のようなソースコード上で遠くの位置へと処理を移動することや、ソースコード上の複数の機能(モジュール)が分離可能であるにも関わらず繋がって関連していること、変数の通用範囲(スコープ)が必要以上に広く、コード上の様々な場所で参照していること、オブジェクト指向プログラミングではクラスの継承を乱用すること等があります。
こうしたソースコードは、読解困難であるため、再利用が低く生産性の高いソースコードとは言えません。