5

どちらがより受け入れられますか (ベスト プラクティス)?:

namespace NP
   public static class IO
   public static class Xml
   ...
   // extension methods

using NP;

IO.GetAvailableResources ();

public static class NP
   public static class IO
   public static class Xml
   ...
   // extension methods

NP.IO.GetAvailableResources ();

また#2、コード サイズは部分クラスを持つことによって管理されるため、ネストされた各クラスを個別のファイルに入れることができます。これは拡張メソッドと同じです (ネストされたクラスがないことを除いて)。

#2のように、既に一般的に使用されている型名を使用できるなど、いくつかの理由で、IO置き換えたり衝突したりしたくないため、を好みます。

あなたはどちらを好みますか?それぞれの長所と短所はありますか?この場合のベストプラクティスは何ですか?

編集:また、2つの間にパフォーマンスの違いはありますか?

4

7 に答える 7

3

私は#1と言います。多くのクラスを 1 つの静的クラスにまとめると、名前空間の目的と同じことを行うからです。これが、名前空間にそれを任せるのが最善だと私が言う理由です。

その場合、必要に応じて using を追加することで、すべての前に「NP」と書く必要をなくすこともできます。名前空間が衝突しないようにネストするか、IO よりも詳細な名前空間名を使用する必要があると思います。

ほとんどの場合、ベスト プラクティスは Microsoft が行っていることですが、Microsoft が行っているのを見たことがありません #2

于 2010-03-15T19:31:02.197 に答える
2

名前空間の要点は、コードを整理するために使用されることです。

名前空間は、C# プログラム内で 2 つの方法で頻繁に使用されます。まず、.NET Framework クラスは名前空間を使用して、その多くのクラスを編成します。次に、独自の名前空間を宣言すると、大規模なプログラミング プロジェクトでクラス名とメソッド名のスコープを制御するのに役立ちます。

.NET フレームワーク自体を見ると、実質的にすべてが最初の例 (名前空間) のように構造化されており、2 番目の例 (ネストされた型) のように構造化されているものはほとんどないことがわかります。ネストされた型が使用されるまれなケースは、外側の型に非常に密接に関連付けられているため、本質的に外側の型の一部であるが、コードの再利用などの理由で別のクラスにする必要がある場合です。

したがって、「ベスト プラクティス」とは、「設計された目的のために物事を使用する」、「.NET フレームワークに最も似ている」、「.NET 設計パラダイムに最も密接に対応する」ことを意味する場合、競合はありません。ネストされた型ではなく、組織に名前空間を使用します。

あなたの編集に関して - いいえ、現実世界で問題となるパフォーマンスの違いはありません。

于 2010-03-15T19:33:56.967 に答える
2

1 つのクラスを呼び出して別のクラスにアクセスする必要がないため、#1 を好みます。一般に、オブジェクトは、クラスのインスタンス化によって作成されたオブジェクトを直接処理するメンバー クラス、メソッドなどを持つことを意図しているため、少し混乱していると思います。つまり、実際には OOP の原則に従っていないということです。Microsoft はまた、1 番目がベスト プラクティスであると述べています。

于 2010-03-15T19:30:47.827 に答える
1

私は#1を好み、名前空間に任せます。他の人が言ったように、クラスを呼び出して他のクラスにアクセスするのは非常に混乱します。

さらに、リフレクションやプロバイダー モデルのようなものを使用するなど、より複雑なことを行う場合、ネストされたクラスを実際のプロバイダー セクションにするか、または到達しようとしているターゲットにするのは面倒です。

最後に、ネストされたクラスとインターフェイスをテストすると、テストがより困難になります。

于 2010-03-15T19:36:03.010 に答える
1

あなたのナンバー2が使われているのを見たことがありません。VB6モジュールを思い出します。

于 2010-03-15T19:31:41.990 に答える
0

公開された (公開された) ネストされたクラスとインターフェイスは避けるべきだと思います。少なくとも、Microsoft FxCop はそう言うでしょう。したがって、最初のものの方が優れています。

編集:(はい、最初のものに変更しました。疲れているときにSOで返信するべきではありません)

于 2010-03-15T19:30:35.057 に答える