原です。

> まつもと ゆきひろです.
> 
> 補足しておきます.
> 
> In message "[ruby-list:2514] Re: WWW library (Re: class design)"
>     on 97/03/31, Yukihiro Matsumoto <matz / caelum.co.jp> writes:
> 
> |案1
> |
> |  接続の必要のない操作はURLのクラスメソッドにして,接続の必
> |  要な操作だけ,URLにまとめる.Fileクラスのパスの操作などは
> |  こうなっていますね.
> 
> Fileクラスではpathに関する操作(basnameとか)はクラスメソッド
> になっています.つまり,pathはオブジェクトではなく,単なる文
> 字列でパスとして操作する場合には関数的なクラスメソッドで操作
> しようというものです.
> 
> |案2
> |
> |  クラスが状態を持つ.つまり,
> |
> |    url = URL.new(urlspec)
> |
> |  でURLオブジェクトを作り,
> |
> |    url.connect
> |
> |  で初めて接続するわけです.これなら無駄な接続は避けられます
> |  ね.
> 
> この場合はurlに関数操作は接続の有無に関わらず行うことが出来
> ます.urlの操作がurlがオブジェクトであった方が望ましい操作が
> 多い場合にはこちらの設計の方が良いかも知れません.


やはりこの File クラスを範にして作りましょう。
ruby としては変則的だけど「両方」でもいいのでは。

例えば、

URL.host("http://www.caelum.co.jp/ruby.html")  #=> www.caelum.co.jp

というのと、

url = URL.host("http://www.caelum.co.jp/ruby.html")
url.host                                       #=> www.caelum.co.jp

の両方ありということ。どうでしょ。


ところで、Java だと getHost なんだけど getHost より get_host の方が
ruby っぽい命名のかな。