5

掘り始めたばかりのソースコードを継承しました。前の所有者がusingディレクティブをのエイリアスとして使用していることがわかりましたList<T>が、この特定のアプローチはこれまで見たことがありません。

namespace MyNamespace
{
    using pType1 = List<type1>;
    using pType2 = List<List<type1>>;

     // classes here
}

これらの要素は両方ともコード内で非常に頻繁に使用され、コード内のいくつかの主要なメソッドからの戻り型でもあります。私は彼が何度も何度も繰り返すのではなく、単純な名前を使用して達成しようとしていたことを理解していList<type1>ますList<List<type1>>。usingステートメントを置き換えるために実際の型を作成するかどうかを議論していますが、時間を費やす前に、現在の実装を維持することの長所/短所があるかどうか疑問に思いました。

4

2 に答える 2

3

一般に、データ構造がアプリケーションのドメインモデル内のエンティティを表す場合、それは独自のタイプを取得する必要があります。これにより、コードがはるかに明確で理解しやすくなります。一方、List<List<string>>中間データ処理のためだけに必要な場合は、そのための適切なタイプを作成することに実際の利点はありません。

あなたの場合、元の開発者はタイプのエイリアスを作成するのに苦労したので、それが頻繁に使用されることは論理的であり、これは「エンティティを表す」シナリオを示しています。もしそうなら、間違いなく先に進んで、構造の新しいタイプを作成します(おそらく、ベアリストよりも適切なものであり、通常は具体的なクラスではなくインターフェイスで定義されたものですが、実際にそこでモデリングしているものによって異なります)。

于 2011-12-08T17:24:28.510 に答える
1

その構成があなたが言うほど頻繁に使用される場合、私は間違いなくそれを実際の型に置き換えます(明示的にリストを書き出すか、新しい型を作成します)。誰かがたまたま型宣言の1つを変更した場合、

using pType1 = List<type2WhichType1InheritsFrom>;

彼は、基本バージョンは、それが使用されているすべての場所を見なくても、より良いことをすると考えているため、いくつかの望ましくない副作用がある可能性があります。

于 2011-12-08T17:22:38.783 に答える