【すぱげってぃこーど】

スパゲッティコード とは?

最終更新:
💡 流れと関係が絡み、変更の影響を追いにくい

処理の流れや関係が絡み合い、理解や変更が難しいコードを指す比喩。決まった行数の基準ではなく、読み解きにくさと段階的な改善を解説します。

📌 このページのポイント
スパゲッティコード:関係をほどく関係が絡み合う入力計算表示役割を整理する入力計算表示呼び出し・状態・制御の関係を見直す小さく変更 → 動作を確認行数や、gotoの有無だけでは決まらない
線は処理同士の関係を示す模式図です。整理後にも必要な依存関係は残ります。テストで動作を確認しながら、小さな範囲で改善します。
ひよこ ひよこ
スパゲッティコードは、長いコード?
ペンギン先生 ペンギン先生
長さだけでは決まらないよ。処理がどの順に進み、どの状態を変え、どこへ影響するかを追いにくいコードを、麺が絡んだようだと表現するんだ。
ひよこ ひよこ
if文が何段もあったら、必ずそうなる?
ペンギン先生 ペンギン先生
深い分岐や長い関数は見直すきっかけになるけれど、何行や何段なら必ずそうなる、という統一の基準ではない。役割や流れを理解できるかが大切だよ。
ひよこ ひよこ
gotoがなければ、大丈夫?
ペンギン先生 ペンギン先生
それだけでは判断できないよ。処理を飛び回る構造が理解を難しくすることはあるけれど、gotoを使わないコードでも、状態や呼び出しの関係が複雑なら追いにくくなる。
ひよこ ひよこ
どう直せばいい?
ペンギン先生 ペンギン先生
まず、変更する部分が何をしているかと、今の動作を確かめる。役割が違う処理を分けたり、名前を見直したり、必要なら重複を整理する。一度に全体を書き換えず、小さく変えて確認しよう。
ひよこ ひよこ
テストが通れば、必ず同じ動作?
ペンギン先生 ペンギン先生
テストは変更で壊れた点を見つける助けになるけれど、確認した範囲には限りがある。重要なケースを押さえ、差分も確認する。動作を変える修正と、動作を保って構造を整えるリファクタリングを区別しよう。
もっと詳しく知りたい人へ

小さい関数に分ければ、必ず読みやすい?

細かく分けるだけでは、呼び出しを追う負担が増える場合があります。役割がまとまり、名前や入出力から理解できる分け方を考えます。

誰か一人の書き方だけが原因?

変更の積み重ねや設計の前提、期限、確認方法なども関係します。人を責めるラベルとして使わず、どの流れや依存が分かりにくいかを具体的に共有します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「スパゲッティコード」って出てきたら「流れや関係が絡み合って、理解や変更が難しいコード」と思えばだいたいOK!
📖 おまけ:英語の意味
「Spaghetti Code」 = スパゲッティのように絡んだコード
💬 麺の絡み合いに、処理の流れや関係の読み解きにくさをたとえた表現です。

参考資料

← 用語集にもどる