矢崎です。リプライありがとうございます。
石井 勝さん wrote:
>
> > 私もXPを知ってから、プログラムを書く(設計するも含む)時に、「シン
> > プル」を心がけようとしています。しかし、なかなか難しいと感じています。
>
> Do the Simplest Thing That Could Possibly Workのことですよね.
>
> これは,XPの場合変更コストのカーブがほとんどフラットだ,という
> 前提条件を考慮に入れないと危険だと思います.
これはBeck本のChapter5 Cost of Changeにも同じ趣旨のことが書か
れていますね。
>
> (そのために,Unit Testing, Refectoring Mercilesslyなどなど,
> 開発工程の後の段階になっても変更を簡単するための仕組みが
> 用意されている,と)
>
御意です。
>
> つまり,後でどうとでもできるから,今シンプルに作ればOKということ
> ではないでしょうか?
>
> ところが,現状のソフトウェア開発は全然そんなことありません.
> あらかじめ柔軟性を考慮しきちんとした設計を最初にやっておかな
> かったから,後で痛い目をみた経験は誰にでもあるでしょう.それは
私はSimplicityというのを考えるとき、次の2つのことを考えました。
1.最初から、柔軟性を考慮した設計を行うべきである。したがって、
Simplicityとは柔軟性を考慮したうえでのSimplicityでなければ
ならない。
あるいは
2.柔軟性を考慮しなくても、後からそれが必要になったときに、
Refactoringなどを行って柔軟性を確保することができるように
なる。よって、Simplicityとは、必要になるまでは柔軟性を考慮
しない(それが必要になったらする)。
実際は1または2のいずれか、ではなく、ある程度の(必要最低限
の/常識的に考えれる程度の。。。)柔軟性を持ちつつ、しかし
必要以上に柔軟にならない程度にSimpleな設計を目指すというこ
とかとも思います。
しかし2の考えも否定しきれません。最初は一切の柔軟性を排
除するところからスタートするという考えも、XP的にはありのような
気もします。このやりかただと、最初はSwitch文がいたるところに
出てくるようなコードからスタートするかもしれません。
#例えばVIEWが1つしかないような場合に最初からMVCモデルで
設計するのでしょうか?
>
> > これも例えばなのですが、デザインパターンにしろ、Fowlerのアナリシス
> > パターンにしろ、ある種の柔軟性、再利用性、拡張性のようなものを
> > ねらいとしているところが多いと思うのですが、これらはXPのシンプル
> > と対立するものなのでしょうか?
>
> XPの場合は,車の運転のようにハンドルを微調整,ときにはUターンも
> してこれらのパターンにたどりつく*こともある*,ということだと思います.
> 対立はしていないと思いますよ.
これはまったくAgreeです。
#私の拙い疑問におつきあいいただき、ありがとうございます。
--
矢崎博英 firo@....jp