2009-05-07 19 views

答えて

2

クラスが何であるかによって異なります。

私が従うことを試みる1つのガイドラインは、名前空間間の依存関係がサイクルをたどるべきではないということです。言い換えれば、低レベルの名前空間は、より高いレベルの名前空間からの型にアクセスすることができません。

これはトップレベルMyAPI名前空間はどちらか含まれていなければならないことを意味します

  • ハイレベルのコード:MyAPI.WebLogicとMyAPI.Compression
  • あるいは、低レベルのコード内検索ができますコードを:MyAPI.WebLogicで使われているコードおよび/またはMyAPI.Compression

パトリックSmacchiaはこのサイトに含めて、このようにあなたのコードを構造化することの利点について多くのことを書かれています:Detecting dependencies between namespaces in .NET

0

本当に名前空間が何であるかによって異なります。そのアプリケーションの場合、bootstrapperクラス、ローダーetx、Mainなどのようなものであれば、(すべての場合と同様に) "それは依存している"と言います。

3

名前空間は、カプセル化などのOOP関連の概念ではありません。組織では、アプリケーションに意味をなさない方法で整理します。ウェブサイトで行う仕事のほとんどはビジネスライブラリを持ち、ほとんどの場合、すべてが単一の名前空間の下に隠されています。

0

私はあなたが本当にカプセル化に違反しているとは思わない。

通常、名前空間はクラスを整理して見つけやすくするためのものであり、アプリにとって意味のあるものです。

0

カプセル化に違反しているわけではありません。実際には、名前空間がOOP固有のものではなく、カプセル化と呼ばれることさえ確実ではありません。

ルールは、トップレベルの名前空間に属していると感じる場合は、単純にその型をトップレベルの名前空間に配置することです。この状況の明白な例は、MyAPI.WebLogicとMyAPI.Compression(おそらく他のものと同様)がすべて特定の型を利用する必要があるため、MyAPI.WebLogicとMyAPI.CompressionはMyAPIに配置するのがベストです。まだ何が所属しているのか分からない場合は、Microsoftライブラリを例として使用してください。 BCL内のSystem名前空間にはたくさんのクラスがあります。

関連する問題