仕様を決め設計し順調に開発が進んでいたが、追加仕様が出て来てしまった…。
そんな時、俺は設計をやり直す事が多いです。
これまで一貫性のとれていた設計が、一部のコードの修正により崩れてしまうと、
コードが煩雑になるだけでなく、バグを持ち込む事になりかねないからです。
しかし、仕様変更の度に、設計をやり直すのは非常にバカらしいので、
最初の設計の段階で、後々追加されたり変更されそうな機能が考えられるのなら、
それらを含めた上で設計します。こうしておけば、予想範囲内の変更に対しては
ほとんどコードは弄らなくて済みます。
そうでない変更があった場合は、設計を見直します。
他のコードに影響が少ない変更なら部分的に設計を見直しますが、
それでは対処出来ない大きな変更なら、既に設計が破綻していますので、一からやり直します。
面倒なように思えますが、修正に次ぐ修正でコードがめちゃめちゃになって、
プログラムがどう動いているのか分からなくなり、修正の度に指数関数的に
作業時間が増えていく事を考えれば幾分マシだと思います。
変なバグも入りにくいでしょうしね。
この辺りの判断は、経験を積んで覚えていくしかないでしょう。
それから、設計の際はモジュール化を意識しています。
#module 〜 #global を使って、関係あるものはひとつにまとめ、関係ないものと切り離す。
こうする事によって、プログラム全体が理解しやすくなるし、コードの再利用も可能になります。
さらに、設計が破綻する可能性を低減させる事が出来ます。
修正によってプログラムがどう動いているのか分からなくなる、という事もめっきり減ります。
ということでまとめ。俺の方針をば。
・設計対象は「決定した仕様 + 将来追加・修正される可能性のある仕様」!!
・モジュール化を意識しよう!!
> 仕様変更が出来るだけ起きないようにするにはどうすればいいでしょうか。
機能拡張しようなどと思わない事です。それ以外に方法はありません。
と言っても、良いアイディアがあれば誰でも機能拡張したいもの。
やっぱり、最初の段階でこれ以上アイディアが出ない位、先を見越して考えておく事が
大事なのでしょうね。
以上、長々とスミマセン…。
もっとすっきり説明出来んモンかな〜。