Когда я смотрю на первый подход, моя первая мысль состоит в том, что причина, по которой код был написан таким образом, заключается в том, что соответствующие операции, вероятно, имеют побочные эффекты. Из названий методов я предполагаю, что они делают? Если это так, я бы определенно выбрал первый подход, а не второй; Думаю, читателям вашего кода было бы очень странно видеть короткое замыкание &&
, используемое для условного выполнения побочных эффектов.
Если побочных эффектов нет, подойдет любой; они оба отлично читаются. Если вы обнаружите, что есть еще несколько условий или сами условия различаются в разных сценариях, вы можете попробовать что-то вроде:
Func<bool>[] conditions = ...
if(conditions.Any(condn => condn()))
{
...
}
Однако я бы не стал использовать такой подход в вашем случае.