Можете ли вы сделать некоторые предположения о x, y, z, q?
например. только один из них может быть правдой. Чем вы могли бы видеть это как государство
enum State {
X{
void doSomething(){
doItTheXWay();
}
},
Y{
void doSomething(){
doItTheYWay();
}
},
Z{
void doSomething(){
doItTheZWay();
}
},
Q{
void doSomething(){
doItTheQWay();
}
};
void doSomething(){
}
}
и в вашем коде, где вы использовали операторы if
Вы можете назначить состояние и просто сделать правильную вещь
State state = getAState();
state.doSomething();
В случае, если вам не нравятся перечисления, State может быть интерфейсом, а X to Q могут реализовывать классы.
Преимущества в этом случае заключаются в многократном использовании одной и той же конструкции if else. Скажите несколько строк кода позже, вы начнете с
if(x)
do_the_next_thing_with_X();
...
или вы можете просто расширить свое перечисление другой функцией и сделать один единственный вызов
state.doTheNextThing();