スパゲッティ‐コード【spaghetti code】
読み方:すぱげってぃこーど
スパゲッティコード
【英】spaghetti code
スパゲッティコードとは、実行順序や構造が複雑に入り組んでいて、整理されていないプログラムのことで、スパゲッティが絡まる様子に例えられたものである。
スパゲッティコードの問題点は、改修やメンテナンス、また、機能変更や機能追加などが難しく、時間がかかるという点にある。スパゲッティコードができあがる原因としてはさまざまあるが、システム設計の時点で細かくコーディングのルールを決めていなかったり、コーディングしている途中で大幅な仕様変更が生じたりすることにある。
スパゲッティコードを回避するには、コーディングに取り掛かる前にルールを細かく決めてルールに沿ってコーディングすることや、開発用のフレームワークを利用するなどの方法がある。
スパゲティプログラム
(スパゲッティコード から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/11/04 02:40 UTC 版)
スパゲティプログラム(英: spaghetti program)またはスパゲティコード(英: spaghetti code)とは、コンピュータプログラムの状態を指すための表現(俗語)であり、命令の実行順が複雑に入り組んでいたり、遠く離れた関連性の薄そうなコード間で共通の変数が使われていたりするなど、処理の流れや構造が把握しにくい見通しの悪い状態になっているプログラムのことである[1]。スパゲッティプログラム、スパゲッティコードとも表記される。
注釈
- ^ 1命令や1行だけを実行させ、命令ごとあるいは行ごとの状態が正常かどうかひとつひとつ確認すること。
- ^ 大規模プロジェクトでは命名規則がコーディング規約で整備されていることが多いが、その命名規則に従っていない一貫性のないコードは可読性の低いプログラムになりやすい。そもそも命名規則自体が現代的なコーディングスタイルに則しておらず不適切であることもある。
- ^ 1つの変数に複数の意味・役割を持たせて使いまわしすると、変数名も不適切・あいまいになりやすく、コードの可読性やメンテナンス性が低下する。
- ^ ただしCには大域ジャンプを可能とする
setjmp()
とlongjmp()
も用意されていた。 - ^ C++やObject Pascalにはデストラクタがあり、C#やJavaではusing文[4]やtry-finally文やtry-with-resources文[5]が使えるため、確実なリソース解放のためにgoto文やラベル付きbreak文などを使用する必要はない。
- ^ 「寝たバグを起こす」「寝ているバグを起こす」とも形容される。
出典
- ^ スパゲッティコード(スパゲッティプログラム)とは - 意味をわかりやすく - IT用語辞典 e-Words
- ^ スパゲッティコードの意味とは?具体例や対策について詳しく解説
- ^ ジャンプ ステートメント - break、continue、return、goto - C# | Microsoft Learn
- ^ using ステートメント - 破棄可能なオブジェクトが正しく使用されるようにする - C# | Microsoft Learn
- ^ try-with-resources 文 | Java SE 7 Documentation | Oracle
- ^ アンチパターンってなに? | Think IT(シンクイット)
- ^ 初期化 - cppreference.com
- ^ memcpy, memcpy_s - cppreference.com
- ^ How to: Define move constructors and move assignment operators (C++) | Microsoft Learn
- ^ Opinion -- 川俣 晶:ソフト開発を成功させる1つの方法 - @IT
- ^ Lecture 4: IPC & Threads / CSE 120: Principles of Operating Systems | Alex C. Snoeren, カリフォルニア大学サンディエゴ校
- ^ JEP 428: javaマルチスレッドプログラミングを容易にする構造化並行性
- ^ Windows with C++ - The Pursuit of Efficient and Composable Asynchronous Systems | Microsoft Learn
- ^ まずコードの可読性を最適化しよう | POSTD
- スパゲッティコードのページへのリンク