1. ホーム
  2. c#

[解決済み] 私のC#コードで.NET 4.0タプルを使用することは、設計上の悪い判断でしょうか?

2022-04-22 09:53:25

質問

を追加したことで タプル クラスは、私のデザインに使用することが悪い選択であるかどうかを決定するために、.net 4で試行錯誤しています。 私が考えるに タプル は、結果クラスを書くための近道になります(他の使い方もあると思います)。

だから、これ。

public class ResultType
{
    public string StringValue { get; set; }
    public int IntValue { get; set; }
}

public ResultType GetAClassedValue()
{
    //..Do Some Stuff
    ResultType result = new ResultType { StringValue = "A String", IntValue = 2 };
    return result;
}

と同等です。

public Tuple<string, int> GetATupledValue()
{
    //...Do Some stuff
    Tuple<string, int> result = new Tuple<string, int>("A String", 2);
    return result;
}

ということは、私がタプルの本質を見逃している可能性はさておき、この例では タプル デザイン的にまずいのか? 私には、ごちゃごちゃしていないように見えますが、自己文書化されていないようで、すっきりしていません。 というのは ResultType そのため、クラスの各パーツが何を意味するかは後で非常に明確になりますが、メンテナンスのために余分なコードが発生します。 しかし Tuple<string, int> が何を意味するのか調べてみる必要があります。 Item を表しますが、書くコードとメンテナンスするコードが少なくなります。

この選択について、何かご経験があれば、ぜひ教えてください。

解決方法は?

タプルは、その作成と使用の両方をコントロールできれば、素晴らしいものです。

しかし、パブリックAPIでは、あまり効果的ではありません。消費者(あなたではない)は推測するか、ドキュメントを調べなければならない。 Tuple<int, int> .

私なら、プライベート/内部メンバーにはそれらを使用し、パブリック/保護されたメンバーには結果クラスを使用します。

この回答 にも情報があります。