- PR -

名前空間とプロジェクト構成

投稿者投稿内容
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-04-17 16:30
引用:

新規項目の作成で NameSpace がコードに書かれませんから郷に (VB に) 従っているという意味です。

C# では namespace がありますが、VB に NameSpace の記述がないですから。


そうなんだ。。。(汗

プロパティとステートメントが任意に混在じゃなくて
一箇所で集中管理みたいなことになればすっきりするんでしょうけどね。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-04-17 16:36
引用:

・プロジェクト名⇒BonoIO.vbproj
・プロジェクトのプロパティのルート名前空間⇒Bono.IO


新規プロジェクトでは双方が一致しますので、意識して書き換えているということですか?

引用:

サブの名前空間を使うときは、NameSpaceステートメントを使用しますが、ルート名前空間からの相対で指定してます。


相対ってルート名前空間を省略してるってことですよね?
#ほんとに相対パスで書けるのかと調べなおしちゃいました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-17 17:15
引用:

まどかさんの書き込み (2006-04-17 16:30) より:

そうなんだ。。。(汗

プロパティとステートメントが任意に混在じゃなくて
一箇所で集中管理みたいなことになればすっきりするんでしょうけどね。


プロパティ? ステートメント? (;?-?)
すっきりしなくなることは今のところありません。

"C# では明示的に書くけど VB では書かない" と書かせて頂きましたが、誤解のないように補足です。
 「C# は '書かなくて良い時でも' 明示的に書く」
 「VB は '書かなきゃいけない時には' 書く」
という意味です。

'書かなくても良い時' の例としては、アプリケーション単位のソリューションが良いでしょう。
この小規模なソリューションは、結局 1 つの名前空間に収まることが多いです。

この場合、C# では、名前空間が 1 つだろうと明示的に書いています。
これは「VB だと書いていない」「C# だと明示的に書いている」の違いだけで、
完成するアセンブリの名前空間の配置は同じです。(結果として、ルートだけですから)

−逆に、'書かなければならない時' の例は、クラス ライブラリの作成になるでしょう。

普通のクラス ライブラリを作成していると、名前空間が 1 つになることは殆どないです。
この場合は、VB だろうと C# だろうと関係なく名前空間は明示的に書きますね。

最上部は「コア名前空間 (NCL 的には System にあたる部分です)」になるので、
ルート名前空間の指定は行いますが、明示的に書いています。
(理由は簡単で、単一でない以上は、明示的に書いた方がわかりやすいということ)

引用:

アプリケーションから切り出していわゆる共通クラスライブラリを作っていましたが


と、最初に発言されていることからして、クラス ライブラリを担当しているようですね。
だったら、ルートオンリーというのは、普通はあり得ないと思いますよ。

# というより、クラス ライブラリの場合は 1 つで収まるものでも、拡張を考え明確に書くべきですね。
# 他のクラス ライブラリらと共に参照された時に、絶対に被らないようにすべきですから。
# そのためのモノですし > 名前空間

引用:

今まで名前空間をあまり意識したことがなかったのでいまいちしっくりきません。


アプリケーション モデル名前空間 (コントロールとか)、
コア名前空間 (System 直下にあるべきもの、Win でも Web からでも使えるようなもの)
を意識されると、しっくりくると思います。

会社によっては、'妙に特別なもの' を作る場合があって、その場合は、
[CompanyName].[TechnologyName] で名前空間を切り出しています。

いずれにしても、既存の NCL がとても参考になると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-17 17:18
引用:

ぼのぼのさんの書き込み (2006-04-17 15:59) より:

NameSpaceステートメントは、ルート名前空間の直下にクラスを配置するときは書きません。
サブの名前空間を使うときは、NameSpaceステートメントを使用しますが、ルート名前空間からの相対で指定してます。


この辺りは好みで分かれそうなところですね。

私は、途中の名前空間を省略することはありません。(相対指定はしません)
やっぱり、明示的に書いた方がわかりやすいですからね。

ただし、コード上で「ネストされた」名前空間の場合は別です。(これは、当たり前ですかw)

コード:

    'コード上で' ネストされた名前空間

    namespace Jeanne {
        namespace Windows {
            namespace Forms {
                   :
            }
        }
    }


ネスト自体が嫌いなので、全然使っていませんけどね...w

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-04-17 17:34
引用:

プロパティ? ステートメント? (;?-?)


あ、プロジェクトのプロパティのルート名前空間のことです。

引用:

と、最初に発言されていることからして、クラス ライブラリを担当しているようですね。


いえ、いまだに.NETの仕事はしたことありません。。。
したがってVB6時代に作った自前のツールをアップグレードしていく中での習得です。

引用:

# というより、クラス ライブラリの場合は 1 つで収まるものでも、拡張を考え明確に書くべきですね。
# 他のクラス ライブラリらと共に参照された時に、絶対に被らないようにすべきですから。


ご心配どうも。
この点はガイドライン然り感覚的なものですから一応心得ておりますです。

今回のきっかけは
たとえば
CSVReader.vb
Namespace Madoka.IO
CSVWriter.vb
Namespace Madoka.IO
となると思うんですが
同じものを書くってのと、宣言が裏に隠れてしまうような感じがして気持ち悪いんです。
#プロジェクトのプロパティでもNamespaceステートメントでもどちらでもできるよっていうのが。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-04-17 17:50
引用:

まどかさんの書き込み (2006-04-17 16:36) より:
新規プロジェクトでは双方が一致しますので、意識して書き換えているということですか?


はい、そこは手動で書き換えています。

引用:

相対ってルート名前空間を省略してるってことですよね?
#ほんとに相対パスで書けるのかと調べなおしちゃいました。


少なくとも私の環境ではできてますよ。
例えばルート名前空間をBono.Dataとしておいて、Bono.Data.SqlClient.SqlConnectionというクラスを作りたい場合、以下のように書きます。
コード:
Namespace SqlClient

    Public Class SqlConnection

    End Class

End Namespace



引用:

じゃんぬねっとさんの書き込み (2006-04-17 17:18) より:
この辺りは好みで分かれそうなところですね。


私もC#の場合は使いません。C#の場合は新規作成したクラスにはじめからnamespaceステートメントがついているので、それをわざわざ削除することはせず、そのまま使います。
VBの場合は、新規作成したクラスにはじめはNameSpaceステートメントがついていないので、それをそのまま使います。
#単に入力するのがめんどくさいだけだったり(^^;
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-17 18:20
引用:

まどかさんの書き込み (2006-04-17 17:34) より:

同じものを書くってのと、宣言が裏に隠れてしまうような感じがして気持ち悪いんです。
プロジェクトのプロパティでもNamespaceステートメントでもどちらでもできるよっていうのが。


ですので、クラス ライブラリなら割り切って、Namespace ステートメントで書きましょうw
気持ち悪いのであれば、ルートは設定しない方が良いでしょうね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)