スパゲッティコードとは?「どこよりもわかりやすく、初心者でもわかりやすい」5秒で理解できる!

IT用語を分かりやすく噛み砕いて、初心者でもスムーズに仕事の会話に参加できるように解説します。このIT用語辞典の目的は「会話についていく」であり、情報レベルは基礎中の基礎の会話についていけるレベルです。これさえ見れば仕事の会話は怖くない! IT用語辞典
スパゲッティコードをざっくりと
  • わかりずらいソースコードのこと
  • 無駄が多く、処理の順番に並んでないコード
  • 絡み合ってる状態がスパゲティっぽい

ここまでで5秒!もっとくわしく知りたい人は続きをどうぞ!

スパゲッティコードをわかりやすく

スパゲッティコードをわかりやすく説明すると

無駄なく簡潔に構造化されてるべきソースコードが、無駄が多く処理する順番無視のスパゲティのように、絡まってる状態に見えるソースコードのこと

スパゲティコードと正常なコードの違い

下記のソースコードは、2つの数値の大小とプラスマイナスを判別して出力している。同じ処理をしているのに、長さが違うということは、スパゲティコードは、無駄が多くて、「このコードは何の処理してるの?」ってなる。

同じ処理をしているスパゲティコードと正常なコード比較

同じ処理をしているスパゲティコードと正常なコード比較

スパゲッティコードの深堀り

もっと深堀りしてわかりやすく説明すると

コンピューターに命令を出すソースコードは、無駄なく構造化されてるのが理想だけど、ルールがなく、構造化されてなく、曖昧なロジックで、「動けばいいでしょ」という感じでソースコードを記述すると、「このコードは何のためにあるの?」、「このコードさっきもあったけど」、「このコードの処理は最初じゃない」と思われる無駄が多く、処理の順番に並んでない、スパゲティコードと呼ばれるソースコードになってしまう。

スパゲッティコードの手順

下記の手順でコードを記述すれば立派なスパゲティコードになる。スパゲティコードを意識的に作るひとはいないはずなので、無意識にやってしまっている場合が多い。スパゲティコードにならないように意識が必要。

スパゲティコードの手順例
  • ステップ1
    制御フローを無秩序にする

    条件分岐(if文)やループ(for/while文)を無秩序に使用し、制御フローが複雑に入り組むようにする。gotoなどのジャンプ文も思い切り使う。

  • ステップ2
    関数の階層を無駄に深くする

    関数の中に関数を定義し、さらにその関数の中に別の関数を定義するようにする。関数の階層が深くなればなるほど良い。

  • ステップ3
    コードを冗長にする

    同じロジックやコード片をどにかくコピー&ペーストして使う。重複したコードがたくさんあれば、コードの肥大化する。

  • ステップ4
    変数名を適当に付ける

    変数名はx、y、zなどの単一文字や無関係な名前にする。変数の役割が全く分からないような名前を付ける。

  • ステップ5
    コメントを書かない

    コメントは一切書かないようにする。コードに対する説明や意図を全く残さず、他の人がコードを理解できないように。

スパゲティコードの類似語

名称 説明
スパゲッティコード 複雑で絡み合った構造で、理解や保守が困難なコード。
まるでぐちゃぐちゃに絡まったスパゲッティのようであることから名付けられた。
ラザニアコード 複数のレイヤーが密接に絡み合い、階層構造が複雑なコード。
ラザニアの層のように見えることから名付けられた。
ゴミコード 無駄なコードや、本来必要のないコードが混在しているコード。
まるでゴミ箱のように汚いことから名付けられた。
クリスマスツリーコード インデントが過剰に使用され、コード全体がクリスマスツリーのように見えるコード。
見づらく、理解が困難であることから名付けられた。
泥沼コード 複雑で冗長なコードで、修正や変更が困難な状態。
まるで泥沼に足を取られたように抜け出せないことから名付けられた。
呪いのコード バグや問題が多く、修正を試みるとさらに悪化するようなコード。
まるで呪われているように扱いにくいことから名付けられた。
妖怪コード 理解不能なほど複雑で、まるで妖怪のように扱いにくいコード。
迷路コード 複雑な分岐やループが絡み合い、まるで迷路のように抜け出せないコード。
カラスの巣コード 無駄なコードやコメントが散乱し、カラスの巣のように汚いコード。
スパゲッティコードと類似表現一覧
上記以外にも、いろんな類似表現が存在する。

スパゲッティコードまとめ

  • 絡み合ってる状態がスパゲティっぽい、無駄が多く、処理の順番に並んでない、わかりずらいソースコード
  • 制御フローを無秩序にして、関数の階層を無駄に深くして、コードを冗長化して、変数名を適当に付けて、コメントを書かなければスパゲティコードができあがる
  • スパゲッティコードの類似語として、ラザニアコード、ゴミコード、クリスマスツリーコード、泥沼コード、呪いのコード、妖怪コード、迷路コード、カラスの巣コードなどがある

スパゲッティコードについて理解は深まりましたか?
まだわからない点や疑問点があれば、ぜひコメント欄で質問してください。生の声を聞かせていただければ、より良い内容を提供できるはずです。

以上、スパゲッティコードについてでした。コメント欄での活発な意見交換を心よりお待ちしています!

当IT用語辞典の目的は「会話についていく」であり、情報レベルは基礎中の基礎で、どこよりもわかりやすくなるように、例えを入れたりしてますが、逆にわかりにくかったらごめんなさい。さらに正確性、具体性、最新性を求めてる方は、もっとググってください。
YouTubeのチャンネル登録はこちら!!
ポチッと応援よろしくね!!
開発・運営ランキング にほんブログ村 IT技術ブログ IT技術情報へ
記事を書いてる人
デプロイ太郎

IT業界の下層に長くいすぎたのかも知れないおじさんです。プロフィールまで見てくれてるのなら、ブログのブックマークとYouTubeのチャンネル登録とX(旧Twitter)のフォローお願いします。

ネットの裏側を見せるYouTube運営中!!

デプロイ太郎のSNSを見てみる!!
IT用語辞典
デプロイ太郎のSNSを見てみる!!

コメント

タイトルとURLをコピーしました