http://wiki.c2.com/?SpaghettiCode
コード品質の悪さを表す言葉として、もっとも有名なのは、おそらくこのスパゲティコードでしょう。コードを読解するさい、あちこち行ったり来たりしなければならない、こんがらがって保守が困難なコードを意味します。
アンチパターン本にはオブジェクト指向ができていないからと表現されていますが、オブジェクト指向を使うというのはあくまで、うまく使えば スパゲティ化を防止するのに非常に有用、という意味にすぎません。まとまりを無視した継承や参照をしすぎると、こんどはオブジェクトのスパゲティが出来上がります。(当時はオブジェクト指向を扱える人とプログラムセンスが高い人が一致していただけと私は考えています)
多くの変数を同時に扱わず、やっていることを小さくまとめること。また、ごちゃっとした部分があっても、他と切り離して隠蔽し、ひとつ上の粒度から見て一様にシンプルに見えるようにしておくことが、スパゲティ化を防ぐ手です。スパゲティコードを放置すると、次々とスパゲティが生まれるので、予防が肝心です。
どこから参照されるかわからない、あらゆる粒度のものをフラットに置かざるをえない、という特徴を考えると、グローバル変数やそれに類するものがいかにコード品質を下げるかがわかると思います。