4

特定の実装を作成するためにすべて一緒にオーバーライドされる、相互に関連するクラスのグループがあります。相互に関連するサブクラスを名前空間で囲むのは良い考えかどうか疑問に思っています。

例として、次の名前空間とクラスを考えてみましょう。

namespace Protocol
{
  public abstract class Message { }
  public abstract class Driver { }
}
namespace Protocol.Tcp
{
  public class TcpMessage : Message { }
  public class TcpDriver : Driver { }
}
namespace Protocol.Ftp
{
  public class FtpMessage : Message { }
  public class FtpDriver : Driver { }
}

名前空間を構成する最良の方法は何ですか? 基本クラスは実際には Protocol.Tcp 名前空間にも Protocol.Ftp 名前空間にも属していないため、名前空間で継承を公開することは避けられないようです。

4

3 に答える 3

6

心配しすぎだと思います!

それは論理的に理にかなっていますか?名前空間内でコードを見つける場所を知っていますか?

すべてが相互に関連している 1 つの大きな名前空間よりも、階層を持つ名前に関連する少数のクラスを持つ上記のようなコードベースの方がはるかに望ましい..

コードベースを論理的に整理するために、名前空間が正確に存在することを忘れないでください

あなたが持っているものは論理的に思えます:)

編集:

例として:

using System.Data;
using System.Data.Sql;

;)

于 2008-08-20T19:16:07.907 に答える
1

元のタグは、この投稿がC#に関するものであることを示しています。したがって、多重継承は無関係です。C#で多重継承することはできません。

Messageたぶん、aとaの基本的なコントラクトを定義するいくつかのインターフェースを定義することを検討する必要があります。そうすればDriver、名前空間構造を使用してテクノロジーの違いを模倣するのが少し自由に感じるかもしれません。

于 2008-09-23T21:52:37.520 に答える
0

これが私だったら、2 つの名前空間を定義します。

Protocol

Protocol.Driver

このように名前空間を分割すると、「ライブラリ コード」と「実行可能コード/テスト コード」が分離されます。また、ディレクトリ構造に一致する名前空間も作成します。プログラムの構造とコードファイルにロジックを与えます。(もしかしたら既にやっているかも…)

于 2008-08-20T19:20:35.167 に答える