Объявление переменной внутри IF C#

#c#

#c#

Вопрос:

взгляните на следующий код :

 if( down == null || down.GetFace() != Face.None || down.GetFace() != Face.Partial )
{  
    // I called GetFace() two times
    // How can i avoid to call it two times, and still putting inside that if
}  
 

Спасибо!

Комментарии:

1. Лучше задавать вопрос как часть тела вопроса, а не как комментарий в вашем примере кода. Люди могут пропустить это.

Ответ №1:

Чтобы быть более удобным в обслуживании и выразительным, сначала отделите нулевую проверку как исключительный случай

затем преобразуйте результат в переменную и проверьте ее.

 if(down == null)
  // Some exceptional case .. return or throw exception

var result =  down.GetFace();
if(result == Face.None || result != Face.Parial)
  // Do your code here
 

Ответ №2:

Рефакторинг метода:

 private bool IsFaceNoneOrPartial(Down down)
{
   var face = down.GetFace();

   return face != Face.None || face != Face.Partial;
}

// Your code is now:
if( down == null || IsFaceNoneOrPartial(down))
{

}