если еще структура

У меня есть эти длинные операторы, к которым я обращусь как 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

Существует ли лучший, более короткий способ записать эту вещь?Спасибо

12
задан Tim Bender 7 April 2010 в 07:25
поделиться

5 ответов

Мне это кажется довольно ясным (и ясным - это хорошо).

Что вы можете сделать, так это сначала оценить x, y, z и q и сохранить их как переменные, чтобы вам не приходилось делать это дважды.

1
ответ дан 2 December 2019 в 22:22
поделиться

Может быть, это немного легче читать. Но теперь вы проведете еще одну дополнительную проверку. Если это не критический код, то, возможно, вы можете использовать следующее:

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.
1
ответ дан 2 December 2019 в 22:22
поделиться

Я не вижу большой проблемы в том, как вы это пишете сейчас. Я рекомендую использовать фигурные скобки даже для одного оператора 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
}
4
ответ дан 2 December 2019 в 22:22
поделиться

Я не рекомендую следующее, на самом деле, я думаю, что вы получили в порядке, но:

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;
}
0
ответ дан 2 December 2019 в 22:22
поделиться

Другой вариант, позволяющий избежать множественных проверок и подверженных ошибкам сложных логических выражений, может быть:

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
}
4
ответ дан 2 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: