まつもと ゆきひろです
In message "[ruby-ext:01608] Re: require 'dir/...'?"
on 01/03/02, "Dai.K." <MAP2303 / mapletown.net> writes:
| init_suite, init_cui, init_all はそれぞれ「まとめることが有意義な場合」という
|仮定です。ひとつのライブラリセットから、いくつかの選択的なファイル群をロードし
|たい場合はありえますよね。排他でもいいけれど。
ええ、いずれにせよひとつのライブラリから複数のファイル群をロー
ドする必要がある場合は、そもそも対象にしてません。それらが対
称である場合には。
|> |この場合、最も基本的なものを外に出すのはちと対称性に欠けるきらいがあ
|> |るので、それよりそのファイル名を foo/__init__.rb にした方がいいでしょう。
|>
|> とはいえ、「外に出す」のと「foo/__init__.rb」にするってのは
|> たいして変わらないような。特別扱いしてるのはおんなじで、ディ
|> レクトリの外に出るかどうかだけの違いですよね。
|
| そうです。
| で、その「外に出す」ということが大きな違いなんですってば(^^;
ええ。でも、その大きな違いは実は「気分」だとご自分でも認めて
いらっしゃったような。
| ls がきたないというのは確かに気分にすぎないですけれど、衝突の心配は気分の
|満足とは違うような。衝突なんてしないと皆言いますが、cgi/session.rb と cgi.rb は?
|グローバルな名前空間はできるだけ汚染したくないのです。
cgi/session と cgi は狙ってああしているので別に構わないです。
「cgiに関する」という点で共通してるんでなんの問題もないと思っ
てます。
私は「fooディレクトリが提供する機能(fooライブラリ)のエントリ
ポイントを用意するならfoo.rb」と言ってるだけで、逆(foo.rbは
fooディレクトリのエントリポイントでなければならない)ではない
ので。
名前空間の汚染という意味ではfooというディレクトリを使った時
点で、ライブラリ空間のfooという名前は予約されたと認識してま
す。fooとfoo.rbがまったく別の意味で使われると相当困るんで。
ですから、「foo.rbを使わない」というのはやはり気分あるいは自
己満足に過ぎないと思います。気分を否定するつもりはないですが、
気分の維持を積極的に支援するつもりもないです。
| 議論がずれちゃってますが、複数環境の理由が分かった以上、サブディレクトリ掘る
|まで成長したライブラリに対しては a案は避けたくなってきました。
| ゆえに __init__.rb のよい名前が一番欲しい。
というか、「fooというライブラリの(一部でなく)全部」という意
図であればfoo/all.rbで良いと思うんです。でも、本当にしたいこ
とはそうではないんでしょう?
その「本当にしたいこと」が分かれば名前も決まるのでは?
逆に「本当にしたいこと」が違うものに同じ名前を付けようとして
るので、迷いが出るのでは?
fooという機能を提供したいのであれば、そのrequireする名前も
fooであるべきだし(つまり、*現状では*foo.rbを用意するしかない)、
fooという分類のbarという機能を提供したいのであれば、foo/bar
であるべきでしょう。ここに迷いはないです。
| 僕は require.rb 使ってるわけですが、ちと不満なり。
私には foo/require というfeature名を提供する意図がまったく理
解できません。これをrequireする人に提供したいものはなに?
fooという名前で表現されるものではないのでしょうか?
それにrequireという名前を付加するのは、蛇足か、自分の(実装の)
都合をユーザに押しつけているように思います。
まつもと ゆきひろ /:|)