У меня есть эти длинные операторы, к которым я обращусь как x, y и т.д. здесь. Структура моих условных операторов идет как это:
if(x || y || z || q){
if(x)
do someth
else if (y)
do something
if(z)
do something
else if(q)
do something
}
else
do smthing
Существует ли лучший, более короткий способ записать эту вещь?Спасибо
Мне это кажется довольно ясным (и ясным - это хорошо).
Что вы можете сделать, так это сначала оценить x, y, z и q и сохранить их как переменные, чтобы вам не приходилось делать это дважды.
Может быть, это немного легче читать. Но теперь вы проведете еще одну дополнительную проверку. Если это не критический код, то, возможно, вы можете использовать следующее:
if (x)
do something;
else if (y)
do something;
if (z)
do something;
else if(q)
do something;
if !(x || y || z || q)
do something completely different.
Я не вижу большой проблемы в том, как вы это пишете сейчас. Я рекомендую использовать фигурные скобки даже для одного оператора if- блоки. Это поможет вам избежать ошибок в случае, если позже вам придется добавить больше строк кода (и тогда вы можете забыть добавить фигурные скобки). Я также считаю, что это более читабельно. Тогда код будет выглядеть так:
if (x || y || z || q) {
if (x) {
do something
} else if (y) {
do something
}
if (z) {
do something
} else if (q) {
do something
}
} else {
do something
}
Я не рекомендую следующее, на самом деле, я думаю, что вы получили в порядке, но:
s = true;
if (x) {
do something;
s = false;
} else if (y) {
do something;
s = false;
}
if (z) {
do something;
s = false;
} else if (q) {
do something;
s = false;
}
if (s) {
so something;
}
Другой вариант, позволяющий избежать множественных проверок и подверженных ошибкам сложных логических выражений, может быть:
boolean conditionhandled = false;
if (x) {
do something
conditionhandled = true;
} else if (y) {
do something
conditionhandled = true;
}
if (z) {
do something
conditionhandled = true;
} else if (q) {
do something
conditionhandled = true;
}
if (!conditionhandled) {
do something
}