プログラムをどう分割するか

by tanabe on May 25, 2005

それゆけ西表島」さんの「プログラムを分割することと図形に補助線を入れることはなんとなく似ている(気がする)」で思ったこと。

プログラムをどう分割するかは経験則だ、と言ってしまうとそれ以上先には進まない。数学の図形の補助線は、ある程度までなら学習を繰り返すことで、補助線の書き方もパターン化できる。プログラムの分割についても同じことが言えるのではないだろうか。

初歩的なところで、やっぱり繰り返しの排除はしてほしい。トップダウンでプログラムを書いて、繰り返し同じ処理をしているところは機械的に関数にまとめてみる。で、どうも似たような処理なんだけど、上手に関数にすることができないようなのを、グローバル変数でなくて引数使って解決するように試行錯誤してみる。

一方で、関数にまとめる意味を考えるようにする。ただ同じ処理だからというだけでなくて、それらを一つにまとめるのがどんな意味を持つのかを考える。まとめた方がいいのか、まとめない方が後々都合がいいのか考える。

自分がそうやって一歩ずつ進んできたんで、この結論をプログラムを分割できない初心者が理解できるのか疑問に思った。

どういう固まりが他のどの固まりと繋がっているか、その固まりはもっと小さな固まりにしたほうがよいのかどうか。ポイントはいくつかあるが、要はプログラムを眺めた時に固まりを意識できるかどうかである。

こう言われても、最初にどうやって固まりを理解すればいいのかわかるのかなぁ。

いや、文句があるわけではなくて、文章自体が言いたいことは分かるんですけどね。

分割統治、分割統治とお題目のように言われて、分割することだけを意識していると、いつまでたってもプログラムを分割できない。分割ありきではなくて、固まりありきなのだ。

分割できない人が本意を理解してくれるのかどうか、ちょっと心配だっただけなんです。大きなお世話と言われれば、まったくもってその通りなんですが。