2008年1月12日土曜日

プログラムが完成しなくなる瞬間

趣味で作っているプログラムが完成しない原因は、やる気の問題であることも多いが、それよりもクリティカルな原因は、コードの複雑化にあると思う。

ある機能を組み込むためには、およそX行のコードを追加する必要があるが、そのためには既存のコードをY行ほど修正しなければならないという状況は多々あることだと思う。

Xが100行だとして、Yが10行程度だったら、問題ない。
XよりYが大きくなった場合、そのプログラムは永遠に完成しなくなるだろう。


Missileフレームワークのソースコードは現在約15000行(内、VisualStudioが自動生成した部分が約5000行)である。
だんだんとプログラムの規模が大きくなるにつれて、機能追加にかかる時間的コストが増加してきた。

自分が、プログラムのコアとなる機能を優先して作り、それ以外の機能を後回しにするのは、後になるほど機能追加が大変になっていく性質があるから、というのもひとつの理由である。

STGっぽいものが何とかMissileスクリプトで記述できるようにようやくなったが、設計段階では気がつかなかった問題を多数抱えた状態になっている今、次のステップに進む前に全体的なリファクタリングを実施しておく必要があると思う。
プログラムの構造をすっきりと整理しておくことで、後々の作業が楽になるはずだ。

リファクタリングの最初の手順として、まずはクラス図を描くところから始めようかと思う。
継承、コンポジション、集約などのクラス間の関係を図にすることで、構造を再確認し、問題がある部分を洗い出すのが目的だ。

何のツールを使ってクラス図を描こうかねえ?
C#のソースから、リバースエンジニアリングでクラス図を自動生成してくれるツールがあればいいんだけれど、ちょっと探した感じだと簡単に使えそうなものは無い感じだった。

ツールの使いかたを覚えるために時間を使うよりは、地道に紙と鉛筆で描いていった方がいいかもな・・・。

0 件のコメント: