2016-06-18 7 views
0

あなたの脳が何かを見ているだけで、すぐに素敵な人がいます。ブール論理の観点からこれを行う「より良い」方法があるかどうかを見てください。シンプルな2ブール効率

private RegenerationType AccquireRegenerationState (int floor, int playerFloor) 
{ 
    bool entranceExists = (floorBlocks[floor].doorBlocks.Count != 0) ? true : false; 

    if (floor + 1 == playerFloor || !floorBlocks[floor + 1].isVisited) 
    { 
     if (entranceExists) 
     { 
      return RegenerationType.Still; 
     } 
     else 
     { 
      return RegenerationType.Limit; 
     } 
    } 
    else 
    { 
     if (entranceExists) 
     { 
      return RegenerationType.Prime; 
     } 
     else 
     { 
      return RegenerationType.Full; 
     } 
    } 
} 
+3

あり、このような質問のための素晴らしい場所http://codereview.stackexchange.com/ – klappvisor

+0

がある@klappvisor現在の形でのこの質問ではありませんそのサイトに適しています。異なるサイトルールを念頭に置いてください。 * this *サイトでは、問題を示すための最小限のコードが、*サイト*上では良いコードであり、これは完全な作業コードではありません。 – hvd

+2

あなたはその無駄な三元項を取り除くことができます。比較の結果は既に 'bool'です。 – harold

答えて

2

私はあなたが達成できる最高のものだと思います。もちろん、あなたは、コードの読みやすさと鮮明さを維持すると仮定:

private RegenerationType AccquireRegenerationState (int floor, int playerFloor) 
{ 
    var entranceExists = floorBlocks[floor].doorBlocks.Count != 0; 

    var whatever = floor + 1 == playerFloor || !floorBlocks[floor + 1].isVisited; 

    if (whatever) 
    { 
     return entranceExists ? RegenerationType.Still : RegenerationType.Limit; 
    } 
    else 
    { 
     return entranceExists ? RegenerationType.Prime : RegenerationType.Full; 
    } 
} 
+0

それはそれです、ありがとう私はちょうど私が伸びているかどうかわからなかったし、より良い方法がありました。ありがとうございました:) –

1
bool entranceExists = (floorBlocks[floor].doorBlocks.Count != 0); 
return 
    (floor + 1 == playerFloor || !floorBlocks[floor + 1].isVisited)? 
    (entranceExists? RegenerationType.Still: RegenerationType.Limit): 
    (entranceExists? RegenerationType.Prime: RegenerationType.Full); 
+0

あなたは素敵な人です^^よろしくお願いします:) –

+1

これは改善点ですか?元の質問の長さがこれよりも維持することをかなり容易にすることをベンチャーにするならば。 – spender

+0

@spenderそれは味覚/好みの問題かもしれません。その具体的なケースで私にとっては、コードはより簡単に読むことができます(_to maintain_についてはわかりません)。しかし、おそらく私は三元演算子:)が好きです。 – AlexD

関連する問題