- - PR -
名前空間とプロジェクト構成
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-17 16:30
そうなんだ。。。(汗 プロパティとステートメントが任意に混在じゃなくて 一箇所で集中管理みたいなことになればすっきりするんでしょうけどね。 | ||||||||||||||||
|
投稿日時: 2006-04-17 16:36
新規プロジェクトでは双方が一致しますので、意識して書き換えているということですか?
相対ってルート名前空間を省略してるってことですよね? #ほんとに相対パスで書けるのかと調べなおしちゃいました。 | ||||||||||||||||
|
投稿日時: 2006-04-17 17:15
プロパティ? ステートメント? (;?-?) すっきりしなくなることは今のところありません。 "C# では明示的に書くけど VB では書かない" と書かせて頂きましたが、誤解のないように補足です。 「C# は '書かなくて良い時でも' 明示的に書く」 「VB は '書かなきゃいけない時には' 書く」 という意味です。 '書かなくても良い時' の例としては、アプリケーション単位のソリューションが良いでしょう。 この小規模なソリューションは、結局 1 つの名前空間に収まることが多いです。 この場合、C# では、名前空間が 1 つだろうと明示的に書いています。 これは「VB だと書いていない」「C# だと明示的に書いている」の違いだけで、 完成するアセンブリの名前空間の配置は同じです。(結果として、ルートだけですから) −逆に、'書かなければならない時' の例は、クラス ライブラリの作成になるでしょう。 普通のクラス ライブラリを作成していると、名前空間が 1 つになることは殆どないです。 この場合は、VB だろうと C# だろうと関係なく名前空間は明示的に書きますね。 最上部は「コア名前空間 (NCL 的には System にあたる部分です)」になるので、 ルート名前空間の指定は行いますが、明示的に書いています。 (理由は簡単で、単一でない以上は、明示的に書いた方がわかりやすいということ)
と、最初に発言されていることからして、クラス ライブラリを担当しているようですね。 だったら、ルートオンリーというのは、普通はあり得ないと思いますよ。 # というより、クラス ライブラリの場合は 1 つで収まるものでも、拡張を考え明確に書くべきですね。 # 他のクラス ライブラリらと共に参照された時に、絶対に被らないようにすべきですから。 # そのためのモノですし > 名前空間
アプリケーション モデル名前空間 (コントロールとか)、 コア名前空間 (System 直下にあるべきもの、Win でも Web からでも使えるようなもの) を意識されると、しっくりくると思います。 会社によっては、'妙に特別なもの' を作る場合があって、その場合は、 [CompanyName].[TechnologyName] で名前空間を切り出しています。 いずれにしても、既存の NCL がとても参考になると思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-04-17 17:18
この辺りは好みで分かれそうなところですね。 私は、途中の名前空間を省略することはありません。(相対指定はしません) やっぱり、明示的に書いた方がわかりやすいですからね。 ただし、コード上で「ネストされた」名前空間の場合は別です。(これは、当たり前ですかw)
ネスト自体が嫌いなので、全然使っていませんけどね...w _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-04-17 17:34
あ、プロジェクトのプロパティのルート名前空間のことです。
いえ、いまだに.NETの仕事はしたことありません。。。 したがってVB6時代に作った自前のツールをアップグレードしていく中での習得です。
ご心配どうも。 この点はガイドライン然り感覚的なものですから一応心得ておりますです。 今回のきっかけは たとえば CSVReader.vb Namespace Madoka.IO CSVWriter.vb Namespace Madoka.IO となると思うんですが 同じものを書くってのと、宣言が裏に隠れてしまうような感じがして気持ち悪いんです。 #プロジェクトのプロパティでもNamespaceステートメントでもどちらでもできるよっていうのが。 | ||||||||||||||||
|
投稿日時: 2006-04-17 17:50
はい、そこは手動で書き換えています。
少なくとも私の環境ではできてますよ。 例えばルート名前空間をBono.Dataとしておいて、Bono.Data.SqlClient.SqlConnectionというクラスを作りたい場合、以下のように書きます。
私もC#の場合は使いません。C#の場合は新規作成したクラスにはじめからnamespaceステートメントがついているので、それをわざわざ削除することはせず、そのまま使います。 VBの場合は、新規作成したクラスにはじめはNameSpaceステートメントがついていないので、それをそのまま使います。 #単に入力するのがめんどくさいだけだったり(^^; | ||||||||||||||||
|
投稿日時: 2006-04-17 18:20
ですので、クラス ライブラリなら割り切って、Namespace ステートメントで書きましょうw 気持ち悪いのであれば、ルートは設定しない方が良いでしょうね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |