2016-11-16 3 views
1

私はこのコードを持っていると言います。If-Elseよりも優れたコーディング慣行

int count = 0; 
int id = GetFirstId(); 
count = getCountById(id); 

if(count == 0){ 
id = GetSecondId(); 
count = getCountById(id); 
    if(count == 0){ 
    id = GetThirdId(); 
    count = getCountById(id); 
    } 
} 

これを行うより良い方法がありますか? LOOPとCASEステートメントのようなものが内部にありますか?

+0

どのようなプログラミング言語を使用していますか? –

+0

C#しかし、私は習慣も他のプログラミング言語にも適用されるべきだと思いますか? – Cosytyle

+0

多くのアイテムがある場合は、間違いなくスイッチを使用する必要があります。 –

答えて

4

異なる方法がある場合は、メソッドを一覧表示してLINQを使用して、最初にゼロ以外の値を取得することができますcount。あなたのGetXXXIdすべてが同じ署名を持っていれば動作します。

var idGetters = new Func<int>[] 
{ 
    GetFirstId, 
    GetSecondId, 
    GetThirdId 
    // and so on 
}; 

var count = idGetters 
      .Select(x => x()) 
      .Select(GetCountById) 
      .SkipWhile(x => x == 0) 
      .FirstOrDefault(); 
+0

IDが増分していない場合はどうなりますか?代わりに、ループ内のケースを使用する必要がありますか?次に、Case(i):id = 15のようなものがあります。 – Cosytyle

+0

私は質問を編集しました。ところであなたのお返事ありがとう! – Cosytyle

+0

さあ、行こう!私はこのソリューションがとても好きです、それは動的です。ありがとう! – Cosytyle

関連する問題