スパゲッティプログラムとは

ナポリタン

スパゲッティプログラム、あるいはスパゲッティコードとも呼ばれるプログラムとは、ソースコードが複雑で難解な形になったものを指します。

その名前の由来はもちろん、スパゲッティの麺のようにソースコードが絡み合っていることからです。

円滑なシステム処理、業務の引き継ぎやすさなど、あらゆる面からエンジニアはスパゲッティコードを書かない努力をするべきなのです。

※本ページにはPRが含まれます。

スパゲッティコードの特徴

まるでスパゲッティのように複雑に絡み合ったソースコード、複雑に絡み合ったプログラムの詳しい条件を見ていきましょう。

goto文の多様

指定したラベルまで一気に飛ばす「goto文」の多様は、関数やループ文などの制御と比べて、コードの流れをおいにくくソースコードの可読性も下がってしまいます。

現代主に使われるプログラミング言語ならば、goto文に頼らずにソースコードを書き上げることができるはずです。goto文を使うとしても、分岐先の指定などが適切ならば、ソースコードが複雑にはなりません。

変数の有効範囲が広い

ソースコードで指定した変数の有効範囲が、必要以上に広かった場合、ソースコードが複雑になり「スパゲッティコード」と化してしまいます。

必要な範囲内での変数指定を心がけるようにしてください。

メンテナンス性に欠ける

スパゲッティプログラムは、ソースコードが複雑なプログラム。

仮に、後々プログラムで障害が起きたとしたら、プログラムをメンテナンスしなくてはならないのですが、複雑なソースコードはメンテナンス性に欠けます。コードを書いたエンジニアの技術不足で、後々担当したエンジニアが苦労することになってしまいます。

コーディングルールが雑

事前にプログラムコーディングのルールをしっかり決めておけば、スパゲッティプログラムにはならないはずなのです。ルールを定めないコーディングは、技術不足、経験不足のエンジニアにありがちです。

どうすればスパゲッティプログラムにならないのか

エンジニアとしては、後々のことを考えてもなんとかスパゲッティプログラムは避けたいもの。スパゲッティプログラムを書かないための対策を考えてみましょう。

仕様書を作っておく

最初はお粗末なものでもかまいません。コーディングの前に、仕様書を必ず作っておきましょう。テーブルの定義など、簡単なものがあるだけでも、後任のエンジニアがコードを読みやすく鳴るなど、多くのメリットがあります。

シンプルなコードを心がける

なるべくシンプルで見やすいコードを書くことを心がけるだけで、ソースコードの出来上がりがまったく違うものになります。どうしてスパゲッティのようにソースコードが入り組んでしまうかと言うと、ソースコードが複雑過ぎるからです。

なるべくシンプルな並びで、あとで誰が見てもわかりやすいシンプルなコーディングを行いましょう。シンプルにコードを書かないと、メンテナンス性にかけるバグだらけのプログラムが出来上がってしまいます。

シンプルにコーディングしたほうが短時間で済むことも多い

複雑にコーディングを行うと、プログラムが入り組んでしまうので、コーディングに多くの時間が必要になってしまうことが多いです。シンプルにコーディングすることを心がけるだけで、コーディングそのものにかかる時間をかなり短縮することができます。

そして、その後に行うメンテナンス時間も、シンプルなプログラムは時間がかかりません。

「if,while」を最小限に

複雑に条件分岐を行い、大きなクラス指定を繰り返すことで、プログラムはスパゲッティプログラムとなります。

プログラムの構造から見直して、なるべく少ない関数指定で、プログラム構造をスッキリさせましょう。そうすることで、プログラムの実行速度を短くすることができ、処理にかかる負荷も小さくすることができます。

コードが複雑になるのは「英語を知らないから」ではない

よく言われるのが、コーディングが下手なエンジニアは「英語を知らないからだ」という意見。スパゲッティプログラムを書いてしまうのは、本当に英語を知らないことだけが原因となるのでしょうか。

複雑で無駄が多いコードを書いてしまうのは、英語を知らないからではなく、言語への理解が乏しいことが原因です。

もっと人間が話す言語のような粒度でプログラミング言語を扱うことができれば、コードがシンプルでわかりやすいものになるはずです。

まとめ

スパゲッティプログラム、あるいはスパゲッティコードとは、まるでスパゲッティのように入り組んでわかりにくいプログラムのこと。

複雑でメンテナンス性にかけるプログラムは、後任のエンジニアの作業の滞り、プログラムの処理速度低下など数多くの問題があります。

なるべくコーディングの際は、シンプルで可読性の高いコードを書くことを心がけるようにしてください。