Если a
, b
и c
являются локальными переменными или иным образом гарантированно не изменится, пока вы go через операторы if, то вы можете написать свой код как:
if (a) {
// instruction 1
} else if (b) {
if (!c) {
// instruction 2
} else {
// instruction 3
}
}
if (a || !b || !c) {
// instruction 4
}
Однако, это все еще довольно сложно. В зависимости от значения a
, b
и c
и от того, как вы их вычисляете, вам, вероятно, следует реорганизовать этот код в несколько методов. Например, оператор if, относящийся к c
, может хорошо вписаться в метод с одной ответственностью.
Если вы хотите проверить правильность этого изменения, вы можете создать таблицу истинности со всеми возможными комбинациями из a
, b
и c
, являющихся true
или false
. Вы бы проверили, какая инструкция будет выполнена в вашем первом коде, и какая инструкция будет выполнена в новом коде.