だいです


Re the message of ``[ruby-ext:01604] Re: require 'dir/...'?''...

matz / zetabits.com (Yukihiro Matsumoto):
> まつもと ゆきひろです
> 
> In message "[ruby-ext:01597] Re: require 'dir/...'?"
>     on 01/03/02, "Dai.K." <MAP2303 / mapletown.net> writes:
> 
> |  facade に疑問ですが、facade はひとつだけなんですか?
> |  RubyUnit がそんな感じですが、ある時は cui ある時は TestSuite ある時は…なん
> |て場合は foo.rb だと困りません? (b案支持理由追加ですね;-)
> 
> そういう時にまで foo.rb をする必要はないでしょう。
> foo.rbという名前が有意義なときにはそうすれば良いだけで、そう
> でないときにまで無理して
> 
> |  foo/init_suite.rb
> |  foo/init_cui.rb
> |  foo/init_all.rb
> |
> |  とできた方がよいでしょう。必要に応じてどれかひとつあるいは複数を require し
> |てもらう。
> 
> としない理由はないと思います。(というか、もともとこの話は、
> 「まとめることが有意義な場合」に限定してると思ってたのですが)。


  RubyUnit はそれぞれ単独で使うから例としてはよくなかったかも。
  init_suite, init_cui, init_all はそれぞれ「まとめることが有意義な場合」という
仮定です。ひとつのライブラリセットから、いくつかの選択的なファイル群をロードし
たい場合はありえますよね。排他でもいいけれど。

  えぇと既に rinn は rinn.rb と corba.rb という二通りのものがありますし、もっと
増える予定です(require でなくてさっき思いついた Builder にするかも)。

  最初 rinn.rb を提供し、後に corba.rb も提供しようとした場合。a方式だと。
    rinnのみ:    require 'rinn'
    corba提供後:
  環境の数で require の書式が異なるか、
    require 'rinn/rinn' と require 'rinn/corba'
  ひとつの時と書式は維持
    require 'rinn' と require 'rinn/corba'

  ですよね。前者は提供環境の数で読み出し方が異るのはユーザビリティが低くなる
し、後者はちょっときたない(少なくとも提供をためらう程度には)。

  corba.rb を上のレベルに持ってくると衝突があるし。といってそのためにライブラリ
を分離して corba/ で提供しなさいというのも乱暴で。

  b方式だったら最初から、
    rinnのみ:    require 'rinn/rinn'
  なので問題なし。

  というあたりが、b案支持の理由です。


> |(b案支持理由追加ですね;-)
> 
> と勝ち誇られちゃうと当惑しちゃいます。;-)

  別に勝ち誇ってるわけじゃ(^^;
  新たな支持理由なんできちんと明記しといた方がよいかなと。「;-)」 は照れ。


> |この場合、最も基本的なものを外に出すのはちと対称性に欠けるきらいがあ
> |るので、それよりそのファイル名を foo/__init__.rb にした方がいいでしょう。
> 
> とはいえ、「外に出す」のと「foo/__init__.rb」にするってのは
> たいして変わらないような。特別扱いしてるのはおんなじで、ディ
> レクトリの外に出るかどうかだけの違いですよね。

  そうです。
  で、その「外に出す」ということが大きな違いなんですってば(^^;


> あ、そうそう。require 'foo' でfoo/__init__.rb をロードするの
> 
> 
> In message "[ruby-ext:01601] Re: require 'dir/...'?"
>     on 01/03/02, Yukihiro Matsumoto <matz / zetabits.com> writes:
> 
> |  * 「foo.rbとfoo/の両立がイヤ」という気分を満足させるための
> |    改造には納得できない
> 
> は当てはまるんですが、残りの二つはないので、まだ妥協できます。

  ls がきたないというのは確かに気分にすぎないですけれど、衝突の心配は気分の
満足とは違うような。衝突なんてしないと皆言いますが、cgi/session.rb と cgi.rb は?
グローバルな名前空間はできるだけ汚染したくないのです。

  ちなみに require 'foo' で foo/__init__.rb を読むようにとの改造はそれほど必
要とは思っていません。あればあったでいいけれど、まずは一般的な名前が普及して
からがいいかな。

  議論がずれちゃってますが、複数環境の理由が分かった以上、サブディレクトリ掘る
まで成長したライブラリに対しては a案は避けたくなってきました。
  ゆえに __init__.rb のよい名前が一番欲しい。

  僕は require.rb 使ってるわけですが、ちと不満なり。
  __init.rb__ は `_' がうるさいかなぁ。
  all.rb は全部読むのが標準とは限らないのでパス。
  ディレクトリ名と一緒? うーん。。。