寺田@東工大 です.
山田@メタボリックス さん,返答ありがとうございます.
> 「もちろん」と言い切ってしまいましょう:-)
> XPはリファクタリングなどを通じて、再利用できるコンポーネントや
> パターンは何かということを探索していくプロセスだと認識しています。
なるほど.
XP はアプリケーションだけでなく,再利用可能なコンポーネントやパターンもインクリ
メンタルに開発していくプロセスである,ということですね.
> 単純できれいに作られてさえいれば、後から少しのメソッドを追加することは
> 幾らでもできますから、そのときにやればいいのでは?
> (もちろんソースコードもないパッケージとして外に出すようなものは
> また別の話になるでしょうけれど)
メソッドの追加に関してはそうだと思います.後からメソッドを追加することはそれほど
大変なことではないと思います.
しかし,「再利用」とか「拡張性」を考えると,間に抽象クラスを一つ噛ませた方が良い
場合があります.YAGNI の原則に従おうとすると,こういう拡張性のための抽象クラスが
作れないのではないか,という気がします.また,後から抽象クラスを噛ませるのは,メ
ソッドを追加するほど簡単ではないように思います.
私の乏しい経験においては,抽象クラスを導出しようと頭をひねった時のほうが,案外き
れいにデザインできたように思います.おそらく,抽象概念を捻出する過程において,そ
のクラスの本質とか Responsibility が見えてきて,上手くいったんだろうと思っていま
す.XP がこういった,1ランク抽象的な概念や本質を見抜こうという努力を否定してし
まうものならば,それはちょっと残念な気がするのです.
私が「オブジェクト指向は楽しい!」と感じるのはまさにこの瞬間(抽象概念が上手く導
出できた瞬間)ですので.(^^;
この辺に関しては,どのようにお考えでしょうか?
# ん? そういえば,メタファーというのは抽象概念の導出を促進しそうですね.
# ・・・メタファー自体を良く理解してませんが.
> C++はOOではないので:-)
(苦笑).C++,好きなんですけどねぇ・・・.(^^;
じゃじゃ馬ならしは楽しい,とか,MT車の運転は楽しい,とか,そんな感じが.
> 誰も使わない(使えない)巨大な「ライブラリ」の残骸をいっぱい見てますから、
> 「再利用可能」ということの意味自体が問われなければならないと思います。
「ライブラリ」のいやらしい点は「継承」ですよね.私は,深い継承ツリーを見るといつ
もぞっとしてしまいます.継承のためにライブラリ全体がベタベタと依存しあって,「こ
のクラスだけつまみ食い」というのが上手くできないのが良くないなぁと感じています.
XP の掲げる「シンプルデザイン」が,ライブラリから継承のいやらしさを払拭し,真の
再利用を実現するものであるならば,それは大いに歓迎したいです.
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Yuichiro TERADA
Tokyo Institute of Technology,
Kobayashi/Todoroki Lab.
+ yterada@....jp
+ http://ginza.mes.titech.ac.jp/~yterada
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/