ホソカワです。
On 01.2.18 05:01 PM, "Y.Terada" <yterada@....jp> wrote:
> 寺田@東工大 です.
> 山田@メタボリックス さん,返答ありがとうございます.
>
>
>> 「もちろん」と言い切ってしまいましょう:-)
>> XPはリファクタリングなどを通じて、再利用できるコンポーネントや
>> パターンは何かということを探索していくプロセスだと認識しています。
>
> なるほど.
> XP はアプリケーションだけでなく,再利用可能なコンポーネントやパターンもインク
> リ
> メンタルに開発していくプロセスである,ということですね.
>
>
>> 単純できれいに作られてさえいれば、後から少しのメソッドを追加することは
>> 幾らでもできますから、そのときにやればいいのでは?
>> (もちろんソースコードもないパッケージとして外に出すようなものは
>> また別の話になるでしょうけれど)
>
> メソッドの追加に関してはそうだと思います.後からメソッドを追加することはそれほ
> ど
> 大変なことではないと思います.
>
> しかし,「再利用」とか「拡張性」を考えると,間に抽象クラスを一つ噛ませた方が良
> い
> 場合があります.YAGNI の原則に従おうとすると,こういう拡張性のための抽象クラス
> が
> 作れないのではないか,という気がします.また,後から抽象クラスを噛ませるのは,
> メ
> ソッドを追加するほど簡単ではないように思います.
>
> 私の乏しい経験においては,抽象クラスを導出しようと頭をひねった時のほうが,案外
> き
> れいにデザインできたように思います.おそらく,抽象概念を捻出する過程において,
> そ
> のクラスの本質とか Responsibility が見えてきて,上手くいったんだろうと思ってい
> ま
> す.XP がこういった,1ランク抽象的な概念や本質を見抜こうという努力を否定して
> し
> まうものならば,それはちょっと残念な気がするのです.
> 私が「オブジェクト指向は楽しい!」と感じるのはまさにこの瞬間(抽象概念が上手く
> 導
> 出できた瞬間)ですので.(^^;
>
> この辺に関しては,どのようにお考えでしょうか?
私はYAGNIをこのように捕らえています。例えば、Dogというクラスが必要になりまし
た。ここで、将来を考えて、抽象クラスAnimalを作り、それを継承してDogクラスを
作るようなことは、YAGNIになってしまいます。メソッドがAnimalに属するべきかDog
に属するべきかなどを考えているのなら、(Animalなしで)Dogクラスをストレート
に書きます。後で、Catクラスが必要になって初めて、Animal クラスを考えるのだと
思います。
寺田さんは、Animalクラスを作るのでしょうか?
--
Kaoru Hosokawa
khosokawa@....com