山田@メタボリックスです。
At 17:01 +0900 01.2.18, Y.Terada wrote:
>しかし,「再利用」とか「拡張性」を考えると,間に抽象クラスを一つ噛ませた方
>が良い
>場合があります.YAGNI の原則に従おうとすると,こういう拡張性のための抽象ク
>ラスが
>作れないのではないか,という気がします.また,後から抽象クラスを噛ませるの
>は,メ
>ソッドを追加するほど簡単ではないように思います.
>
>私の乏しい経験においては,抽象クラスを導出しようと頭をひねった時のほうが,
>案外き
>れいにデザインできたように思います.おそらく,抽象概念を捻出する過程におい
>て,そ
>のクラスの本質とか Responsibility が見えてきて,上手くいったんだろうと思っ
>ていま
>す.XP がこういった,1ランク抽象的な概念や本質を見抜こうという努力を否定し
>てし
>まうものならば,それはちょっと残念な気がするのです.
>私が「オブジェクト指向は楽しい!」と感じるのはまさにこの瞬間(抽象概念が上
>手く導
>出できた瞬間)ですので.(^^;
>
>この辺に関しては,どのようにお考えでしょうか?
来たな:-)
相対的な問題になってしまうかもしれませんが、XP規模のプロジェクトならば
間に一つの抽象クラスを噛ませるのは、せいぜい数時間の作業ではないでしょうか?
よく出来たリファクタリング・ブラウザなどがあればもっと速いかもしれません。
(でも、リファクタリング・ブラウザってやっていることが直接的に見えなくなるのが
いまいちのような気がします。
ついついgrepやfindをかけてしまうのは古い考えでしょうか:-)
リファクタリングの過程で、同じインタフェースが何回も現れたらそれを
抽象クラスに持っていく作業をしますよね。
ときどきは大掛かりなリファクタリングをすることもあるでしょう。
もちろんこの背景には、後期フェイズの再作業も比較的低いコストでできるという
前提(それを支えるのがXPのプラクティスやOOテクノロジ)があってのことですが。
僕としては、「うまく抽象化(モデリング)が出来たときの喜び」と同時に
「考えたものが(早く)実際に動いたときの喜び」も両方あるような気がします。
>「ライブラリ」のいやらしい点は「継承」ですよね.私は,深い継承ツリーを見る
>といつ
>もぞっとしてしまいます.継承のためにライブラリ全体がベタベタと依存しあっ
>て,「こ
>のクラスだけつまみ食い」というのが上手くできないのが良くないなぁと感じてい
>ます.
そうですね。
でも最近のライブラリやフレームワークにはあまり深い継承や継承に依存したAPIは
少なくなっているのではないでしょうか?
ある程度確立された分野(GUIとか)にはかなり深い継承もありますが。
>XP の掲げる「シンプルデザイン」が,ライブラリから継承のいやらしさを払拭し,
>真の
>再利用を実現するものであるならば,それは大いに歓迎したいです.
XP自身にそういうプリンシプルはありませんが、リファクタリングやパターンを通して
それが実現されることを期待したいですね。
---
山田正樹, (有)メタボリックス
259-0111 神奈川県中郡大磯町国府本郷576-8
tel: 0463-60-2234 fax: 0463-60-2266
moblie: 090-8347-9605
http://www.metabolics.co.jp/