このコードで重複を削除する方法はありますか
-
01-10-2019 - |
質問
このように見える方法があります:
private double GetX()
{
if (Servings.Count > 0)
{
return Servings[0].X;
}
if (!string.IsNullOrEmpty(Description))
{
FoodDescriptionParser parser = new FoodDescriptionParser();
return parser.Parse(Description).X;
}
return 0;
}
そして、私は次のように見える別の方法を持っています:
private double GetY()
{
if (Servings.Count > 0)
{
return Servings[0].Y;
}
if (!string.IsNullOrEmpty(Description))
{
FoodDescriptionParser parser = new FoodDescriptionParser();
return parser.Parse(Description).Y;
}
return 0;
}
これを統合する方法はありますか?
解決
別のものを作ります GetServing
方法:
private Serving GetServing() {
if (Servings.Count > 0)
return Servings[0];
if (!string.IsNullOrEmpty(Description)) {
FoodDescriptionParser parser = new FoodDescriptionParser();
return parser.Parse(Description);
}
return null;
}
private double GetX() {
Serving serving = GetServing();
if (serving == null) return 0;
return serving.X;
}
private double GetY() {
Serving serving = GetServing();
if (serving == null) return 0;
return serving.Y;
}
他のヒント
private double Get(Func<SomeType, double> valueProvider)
{
if (Servings.Count > 0)
{
return valueProvider(Servings[0]);
}
if (!string.IsNullOrEmpty(Description))
{
FoodDescriptionParser parser = new FoodDescriptionParser();
return valueProvider(parser.Parse(Description));
}
return 0;
}
これは次のように使用できます。
var x = Get(value => value.X);
var y = Get(value => value.Y);
述べる: SomeType
のタイプです Servings[0]
私があなたのコードを正しく理解しているなら、それはタイプのタイプと同じでなければなりません parser.Parse(Description)
.
仮定します parser.Parse()
同じクラスを返します Servings[]
ホールド、あなたはaを作成できます nullオブジェクト そのタイプのxとyの両方がゼロです。次に、の最初の要素を返す関数を持つことができます Servings[]
, 、それが存在する場合、または new FoodDescriptionParser.Parser(Description)
, 、 もしも Description
存在する、または最後に、そのnullオブジェクト。必要に応じてxまたはyを収集します。
所属していません StackOverflow