У меня есть следующий код:Могу ли я объединить эти два оператора if?
if (a || b)
{
X();
}
if (a)
{
Y();
}
Могу ли я каким-то образом объединить эти два, если-заявления?
У меня есть следующий код:Могу ли я объединить эти два оператора if?
if (a || b)
{
X();
}
if (a)
{
Y();
}
Могу ли я каким-то образом объединить эти два, если-заявления?
Это было бы лучше, потому что если первый цикл завершается, потому что а и Ь являются ложными, то нет необходимости проверять вторые петли
if(a||b)
{
X();
if(a)
{
Y();
}
}
Не на самом деле, может быть, вы могли бы передать значение на X, и если это A, то он будет вызывать Y, давая только один оператор if. Это честно является гораздо более понятным способом справиться с этим
Если Y() метод всегда возвращает истину, вы можете написать:
if(a || Y() || b) X();
Но вам необходимо принять во внимание, что этот код будет читаться другим лицом , поэтому он должен быть легко читаемым и объяснить его значение для другого человека. Так что лучшее решение зависит от значения а, Ь, X и Y. И все следующие будут правильными с различными смысловыми значениями:
if(a || b)
{
X();
if(a) Y();
}
или
if(a)
{
X();
Y();
}
else if(b)
{
Y();
}
Если 'Y()' возвращает все, что может быть использовано для boolean, тогда вы можете использовать '(Y() || true)', если это не оптимизировано. Вы действительно теряете некоторую читаемость, так что это не очень хорошая идея. – Matt
ли иметь в виду, есть значение оставляя читаемый код. –
Я думал, что просто сделал его читаемым. – Drutten
То, что у вас есть, легко читается и легко анализируется. На техническом уровне мне было бы интересно узнать, какие кодовые люди придумали, но я, скорее всего, все равно буду придерживаться этого или перенести чек в именованный метод или что-то еще. –