2

クラスを物理的にグループ化する方法、つまり継承、構成などを理解しています。しかし、名前空間(クラスの論理的なグループ化)の利点を本当に理解したことはありません。私は通常、プレゼンテーション層用の名前空間、ビジネスロジック層用の名前空間、およびデータアクセス層用の名前空間を持っています。

com.Application.BusinessLogicLayer  
com.Application.PresentationLayer
com.Application.DataAccessLayer

プレゼンテーション層には、VB.NETアプリやASP.NETアプリなどの複数のアプリが含まれる場合があります。ビジネスロジック層が複数のDLLに分割される場合があります。

名前空間とは何かに関する試験の質問に答えることはできますが、問題のあるドメインに知識を適用するのは困難です。たとえば、以下のコードを見てください。

Namespace com.application.businesslogiclayer
    Public Class ClassA
        Private CB As ClassB
    End Class
End Namespace
Namespace com.application.businesslogiclayer
    Public Class ClassB
        Private CC As ClassC
    End Class
End Namespace

Namespace com.application.businesslogiclayer
    Public Class ClassC

    End Class
End Namespace

ClassAはClassBと構成関係を持ち、ClassBはClassCと構成関係を持っているので、それらはすべて同じ名前空間に属する必要があると思います。

com.application.businesslogiclayer.classABC

。ただし、「Import」ステートメントを使用して他のクラスを取り込むことができるため、これは正しくない可能性があります。

名前空間を設計するときに開発者はどのような基準を使用しますか?

4

2 に答える 2

4

名前空間は、型を論理的にグループ化するだけでなく、名前空間も完全な型名の一部であるため、型間の名前の衝突を回避するのにも役立ちます。たとえば、アプリケーションにLogという名前のクラスがあるが、Logという名前のクラスを持つ他の誰かによって作成された別のアセンブリも参照しているとします。一部の実装で両方のLogクラスを使用する実際的な理由がある場合があり(つまり、異なるタイプのロギングを行うか、1つは情報のロギング用で、もう1つはツリーの一部を表すため)、名前空間により、コンパイラーは2つのLogを区別できます。クラス。大規模なプロジェクトでは名前空間がより重要になるため、グループ化に名前空間を使用することの有用性を軽視しないでください。

基準に関しては、単一の名前空間から始めます。アプリケーションが進化するにつれて、コードをより適切に整理するために、単一の名前空間を2つ以上のネストされた名前空間で整理したい場合があります。おそらく、IDEで現在作業していないコードを折りたたんで、邪魔にならないようにする必要があります。論理的で意味のあるものにする。.NETでは、基本クラスライブラリの名前空間の設計ガイドラインと例に従ってください。

于 2013-02-15T18:46:41.720 に答える
2

クラスライブラリを開発するための設計ガイドラインの「タイプと名前空間」ページを読むことをお勧めします。これは、名前空間を使用する必要がある場合の詳細であり、一般的なガイダンスを提供します。

一般に、タイプを個別の名前空間に整理し、関連する機能を名前空間にグループ化すると、プロジェクトを整理するのに役立ちます。

あなたの場合、すべての主要なビジネスロジックを1つの名前空間に配置し、プレゼンテーションロジックを独自の名前空間に分離することをお勧めします。これは、コンパイラが懸念事項の混合を防ぐのに役立つなど、多くの点で役立ちます(Importステートメントを明示的に追加せずに間違ったクラスを使用することはできません)。

これは、タイプ名の衝突を回避するのにも役立つため、各問題領域内にシンプルでクリーンでわかりやすい名前を付けることができます。

于 2013-02-15T18:51:30.030 に答える