スパゲッティってどうすればいいの

中さんのBlogに「スパゲッティに立ち向かうときのハウトゥ10カ条」がのっております。
すでにスパゲッティになってしまっているものに対しては、中さんのBlogのようにするしかないです。
逆にスパゲッティにさせない(しない)為にはどうするのがいいのかと言うことなんですけど、これはプログラムを適切なモジュールに分割して、その間のシーケンスとして設計し、コーディングしなさいと言うことになります。つまり、プログラムを一度で考えられる(管理できる)大きさに分割して、プログラムを分割統治せよと言うことになります。これをオブジェクト指向では、モジュールをオブジェクトと、シーケンスをメッセージパッシングという用語に置き換えます。
プログラムが人から見てスパゲッティと呼ばれるような状態になってしまうのは、充分に考慮せずにプログラムを作り始めてしまうため、本来プログラミングコードを書き始める前に終えておくべき思考が、コーディング中に行われ、思考の過程がプログラムコード中に分散して記述されてしまい、その結果収拾がつかなくなってしまうためです。つまり、設計が行われていないか、充分ではないために、プログラマの思いつきで関数の分割したり、不必要な構造体を作ったり、辻間あわせのグローバル変数を作ってしまう事になります。これでは、そのプログラマのコーディング中の思考の過程が他人や3ヶ月後の自分には理解が出来ないので、それらがそのプログラムコードを読もうとしてもわけのわからないコードとなってしまいます。
ですので、プログラムコードをスパゲッティにしないためには、コーディングを行う前に一呼吸置いて、自分が作るべきものが何者かを考えもう一度整理する必要があります。何も関数内のロジックを詳細にフローチャート化する必要もないとは思います(全部いらないって事じゃないですよ)が、モジュール化する単位と、各モジュールの関数間の関係とそれらの呼び出し順序ぐらいは紙にメモをとるなりしないと、コーディング中に収拾がつかなくなります。そしてそのメモは何らかの形で残すべきです。(本来はそれが設計書となっているはず。)
とりあえずは設計の重要性を認識する(してもらう)事が、スパゲッティコードを書かない、または、それを修正しなくてすむようにするためには必要となります。

コメントを残す