矢崎です。リプライありがとうございます。
Yoshihiro Tsukamotoさん wrote:
> はじめまして、塚本といいます。
>
> >>>>> "firo" == 矢崎 博英 <firo@....jp> writes:
>
> firo> 私もXPを知ってから、プログラムを書く(設計するも含む)時に、「シン
> firo> プル」を心がけようとしています。しかし、なかなか難しいと感じています。
> firo> 例えば、ある程度柔軟性をもたせようというのが、私がこれまでやって
> firo> きて身についた方法の1つなのですが、それは果たしてシンプルに
> firo> 対立することなのかどうか?です。
>
> XP関連の資料をきちんとフォローしていないので「XPのシンプル」については
> 口を挟むことが出来ませんが、一般的に、柔軟性が即ち悪という図式はないと
> 思います。
XPも柔軟性が悪いということではないと思います。ではなにか?
というのは後で書きます。
>
>
> 個人的な経験から明らかに悪いと思うのは「短命な柔軟性」といいましょうか、
> 「当座の機能A」と「将来の機能B」を単純に合成したものを実装しておいて
> 「柔軟性を持たせた」と考えるような発想です。
>
なるほど。柔軟なのに短命である、、、というのはなかなか皮肉
がきいていて、おもしろい(??)ですね。
>
> その一方で「短命なシンプル」もあります。ユーザ(人間でなく別の機能Xのこ
> ともあります)が「当座の機能A」の実装詳細に依存しきっているため、将来の
> 「類似機能A'」に対応できないようなものです。
> # このタイプのユーザはハードコーディングを好んでします。
>
この点をXPはどう考えるか??というのがポイントです。
>
> 「短命な」が前置きされたシステムは、見えている範囲の機能を「ぎゅう詰め」
> にしたものです。計画性に乏しいその発想では、まだ見えない機能C,D,... を
> 追加する備えには無頓着なので、破綻する時期は割と早いものです。その先に
> は場当たり的な拡張工事を重ねるに至る暗い道が控えていますが、これは多く
>
「ぎゅう詰め」、「見えない機能」、「場当たり的」・・・、これらのキーワードは
私自信が今まで経験したことを表すのに十分すぎるくらい的確なキーワード
だと思います。
しかしもしかしたらXPは、あえてそれをよしとする(「場当たり的」はちがいま
すが)方法論なのかもしれません。
つまり、私なりの1つの解釈ではXPとは
1.今見えている(必要だとされている)機能 *だけ* をプログラム
する。
2.将来必要となる今は *見えない機能* は、それが本当に必要
になるかどうかわからないので、今はプログラムしない。
3.機能がシンプル(必要最低限の機能)ということだけでなく、構造
もできるだけシンプルでなければならない。柔軟性のためだけに
構造が複雑になるのならば、その柔軟性は将来必要になるかど
うかわからないので、そのためだけのプログラム構造にはしない。
4.将来必要だと思われていた機能が、必要になった、その時点で
その機能を作りこむ。しかし、この時場当たり的な修正はしない。
Simpleかつ人間にわかりやすいように直すこと。
5.新しい機能を作りこむときに、今のプログラム構造に柔軟性がない
、あるいはSimpleかつわかりやすくならないと感じたら、まず必要
な柔軟性、わかりやすさを持たせたあと(Refactoringして)、新し
い機能を作りこむ。
要は最初から柔軟性、再利用性を確保しておく必要はなく、それが
必要になったときに行えばよい。ということではないかと思います。
ですから、
XPは柔軟性、再利用性に対立するものではない。しかし、それを
やみくもに行うことには反対する。必要な時に必要な程度で行う。
ということでしょうか??
--
矢崎博英 firo@....jp