Невозможно сделать это без if else, сохраняя при этом читабельность. Некоторые варианты, которые можно сделать, сохраняя его читабельность, включают использование «тернарного оператора» и нового «переключателя», введенного в Java 14.
Сократите его до одной строки, используя тернарный оператор :
return isXStepNeeded(dto) ? doXStep(dto).then(doYStep(dto.getRfid())) : doYStep(dto.getRfid());
Или используйте новый случай переключателя:
return switch (Boolean.toString(isXStepNeeded(dto))) {
case "true" -> doXStep(dto).then(doYStep(dto.getRfid()));
default -> doYStep(dto.getRfid());
};
EDIT:
Поскольку вы не хотите писать doYStep
дважды, вы можете сделать:
return Mono.just(isXStepNeeded(dto))
.filter(b -> b)
.flatMap(b -> doXStep(dto))
.then(doYStep(dto.getRfid()));