From: "NAKAMURA, Hiroshi" Date: 2004-03-28T01:04:58+09:00 Subject: [ruby-dev:23244] Re: [ruby-cvs] ruby, ruby/lib, ruby/lib/rss, ruby/sample/openssl: * lib/logger.rb: trim tail space of each line. no user visible change. なひです。 > From: "Yukihiro Matsumoto" > Sent: Sunday, March 28, 2004 12:53 AM > |> 私は定義順の問題がない場合(そのファイルが明示的にrequireして > |> いるファイルで定義されているクラスとか、組み込みクラスとか) > |> には、クラスの再定義にはスーパークラスを省略するのが好みです。 > |> 元の定義でスーパークラスが変更される場合に強いからです。 > | > |# 以下、他人の好みに(以下略 > | > |なひはこの「強さ」はあまり好きでありません。 > |時によっては、あるコードを書いたとき以後、元の定義でスーパークラスが > |変更されたら、間違いなくエラーになって教えてくれるのが、"強い"クラスだと > |感じます。 > > 変更された新しいスーパークラスがDuck Type的に適合するクラス > であれば、エラーになるべきとはいえないと思います。 同感です。 で、問題は、Duck Type的に適合するクラスかどうかのチェックが、 現状、動かしてみるしか、ランタイムにしかできないこと、 また障害時のメッセージがわかりにくくなりがちなことですかね。 もしDuck Type的に適合しないのであれば、"強い"クラスとしては、 早めに、わかりやすいところでエラーになって欲しい。 例のRCR、Duck Type的インタフェイスの宣言をサポートするヤツが あれば、少し気が楽になるかな?