In article <87brsnhm7i.wl / tempest.nemui.org>,
  Tatsuki Sugiura <sugi / nemui.org> writes:

> で、本題なのですが、このライブラリについて色々コメント(or patch)を
> 頂けませんか。私が ruby やオブジェクト指向についてあんまり理解していない
> 事もあり、色々と直した方が良い所があると思われます
> # 特に組み込み File クラスを乗っ取る辺りのコードは、もうちょっと良い
> # 方法が無いものかと。

コードではなく、モチベーションに対するコメントになりますが、クラスメソッ
ドはあまり気にしないほうがいいのではないかと思っています。

VFS というのは、要するにファイルシステムみたいなものを polymorphic に
扱う機構なので、ファイルシステムへの API が OOP としてまともであれば自
然と使えるはずのものです。

それが Ruby でそうなっていないのは、ファイルシステムへの API が OOP と
してまともでないからです。具体的には、文字列をパス名に使っているのが問
題です。パス名に独自のクラスを作って、パス名のインスタンスメソッドを通
してアクセスするようになっていれば、URI にも同じ名前のメソッドを用意す
るだけで VFS みたいなことが実現できます。だいたい、他のクラスに比べて
File や Dir はクラスメソッドがすごく多くて、OOP としての設計の失敗を表
しています。あれは OOP ではありません。
(と、LL Saturday でまつもとさんに主張したなぁ)

というわけでクラスメソッドで思い悩むよりは「操作する為には基本的にイン
スタンスメソッドを呼ぶ」というのを普及させるのが適切だと思います。

なので、インスタンスメソッドを使いやすくするのが肝要で、たとえば URI
は生成するのが面倒だというなら URI リテラルを導入する(させる)とか、そ
ういう方向がよろしいんではないかと思います。

というか、私はそういうのがいいと思っているから、open-uri.rb や
pathname.rb を作っていたりするわけですが。

あと、VFS という名前のクラスやモジュールがもし必要だとしたら、文字列か
らパス名や URI に変換する所くらいかなぁ、と思っています。
-- 
[田中 哲][たなか あきら][Tanaka Akira]