赤坂です。
川端 光義 <kawabata@....jp> san wrote:
> このことは私もすごく悩みました.
> ペアプロする相手によっても,収束解って変わりますよね.
>
> で,役割をきっちりさせる意味でもっとリファクタリングできるんでしょうが,
> YAGNIの原則に反するのか?っていう感じもしました.
次の変更前にリファクタリング、でも云いのかもしれませんね。
> オブジェクト指向的には,ダサイと思うんですが,これは
> XPでいうシンプルなのかな?とも思いました.
私のシンプル感とは違いますねぇ。
# シンプルは美しくないと。
> 例えば,ボーリングのルールを変更した時,
> 数多く作られたクラスと,2つだけのクラスとでは
> 実際どちらが早く仕様変更に対応できるか?
> 普通は役割が分かれているモデルの方が仕変に強いと思いますが,
> 予想しない変更だった場合,どうなんだろう?と.
ストーリー(要求される機能)がある程度簡単なら
2つだけのクラスの方が修正が簡単ということもあるでしょうね。
# 修正の前に、リファクタリングするんでしょうけど。
クラスに自然な役割が割り振られていると、容易に変更に対応することが
できるのではないか、というのが私の意見です。
ルールの変更が想定外のもの(既存の役割が不自然なものになるの)だったら、
当然クラスの役割を見直すことから始めると思います。
どちらにしても、なんか変と思った時点でリファクタリングが必要なんだと
思います。
数多く作られたクラスのケースで、よくあるのは不自然な役割のまま、無理やり
変更に対応してしまい、どんどん訳のわからない構造になってしまうことです。
# これなら、2つのクラスで対応してしまった方がまし、と言えなくもないかも。
# ストーリーが複雑になったら、その時点で考えれば良いかも、ですね。
私の結論(理想)は、常に自然な役割に割り振っておくこと、です。
ではでは。
--
赤坂 英彦 (Hidehiko AKASAKA)
akasaka.h@....com