STLでおなじみの std を始めとする名前空間の御一行様。
みなさん使ってます?ボクは使ってません。
タイピング量が増える上に可読性が下がるだけで
ちっともおいしくないと思ってるからっす。
たくさんの人から使われるようなプログラム(ライブラリなんか)なら、
名前衝突を避けたり通用範囲にも気を使う必要があると思う。
けど、そうじゃないなら実質的な旨みがない。どころか、
上で言ったような欠点だけが出ちゃいますよね。
この”実質的な利益”ってトコに着目したご意見を
みなさんから聞きたいです。宜しくお願いしまーす。
(少人数開発をしてる人で バリバリ使ってるよ!
実はこんなにいい事あるよ!という意見があると嬉しい)
名前の衝突を抑えるのが目的なんだから、
衝突の心配がないなら使う必要ないでしょう。
私は namespace を新たに定義する、ということはしたことないですが、
名前空間って、クラス名 {} で囲われた内部や、メソッド名 {} で囲わ
れた範囲も含むんじゃなかったでしたっけ? だから無意識のうちに
みんな使ってるんじゃないでしょうか?
クラス内部でしか通用しない名前の struct や enum はよく定義して
ますし。
namespace を定義するのは、パッケージを意識して作るときだと思い
ます。パッケージとは変更が影響をおよぼさない範囲のだったと思う。
別にライブラリとして提供しなくても、同一プロジェクト内で通信関
係のクラス群と、画面インターフェイスのクラス群とをパッケージ化
して、「このパッケージの内部がいくら変わってもあなたはソース修
正しなくてよいし、再コンパイルの必要もないですよ」という形で提
供し合うということはありそうな話です。
使ってます。道具作りのときには。
あと、無名ネームスペースもよく使います。
> タイピング量が増える上に可読性が下がるだけで
タイピング量が増えるのは事実。
可読性が下がるというのはどうでしょう。
私は、識別子がどこに属するものかがソースコード上で明示されるので、却って読みや
すくなると感じています。
それに、自分ひとりでプログラムを組んでいるときも、油断しているとすぐに名前が衝
突します(私だけ?)。
ですから、原則として名前空間を使うようにしています。
タイピング量が増えるのはインテリセンスを活用してないからだと思います。
少なくとも VS2003 は名前空間でも補完してくれます。
タイピングが長いとか言ってたら、.NET Framework に移行できませんよ~。
(MS はすでに Win32 に見切りを付けてます)
System.Data.SqlClient.SqlConnection myConnection = new
System.Data.SqlClient.SqlConnection();
とか。これは C# ですけど。
それに using namespace もありますしね。
名前空間については わたしも個人的なプログラムでは
ほとんど使ってませんけどね。
名前空間って何ですか?
教えてください。
検索してくさだい。
それでもわからなかったら、何がどうわからないのかを整理して
新しいスレッドで質問してください。
けちんぼ
ファイルを分割する場合は無名ネームスペースをよく使いますよ。
同じ名前のグローバル変数とか出てきますし。(気にしなくてよくなる方がメリットか)
まぁ、グローバル領域でstaticつければいいんですけど、これって将来できなくなる
のですよね?(という話を聞いたような・・・)
あと、複数の人でプロジェクトを組む場合、ネームスペースがないと困ります。
結構便利だと思いますよ。
でも#defineもネームスペースで分割できたらよかったかな、と。
既に書かれていますけれど、関数名の衝突をさせるためによく使用します。
そうする事でそれぞれの関数名や定数名を簡単に出来ます。
これがないと関数名や定数名にいちいちシステムが判別できるプリフィックスを
付けないといけなくなるので逆にタイプ量が増えると思いますけれど。
同一システム内ではusing namespaceを宣言すれば済むので効果的だと思います。
#defineはほとんど使わないのであまり気にならないですね。
ほとんど、constに置き換わってますし。
がーん、逆だ。
誤)
既に書かれていますけれど、関数名の衝突をさせるためによく使用します。
正)
既に書かれていますけれど、関数名の衝突をさせないためによく使用します。
みなさん、お返事どうもありがとうございました!
「使わなくてもいいんじゃない?」という意見
も意外にありましたね。
が、今まで接頭語で名前の衝突回避をしてきた為、
試しに使ってみる事にしまーす。
a