まつもと ゆきひろです

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という名前を付加するのは、蛇足か、自分の(実装の)
都合をユーザに押しつけているように思います。

                                まつもと ゆきひろ /:|)