O caso de uso é que há um conjunto de métodos que precisam ser executadas com base em se o anterior voltou true
ou não. Por exemplo:
class Test {
boolean method1() {...}
boolean method2() {...}
boolean method3() {...}
...
void callAll() {
if(method1()) {
if(method2() {
if(method3() {
...
}
}
} else {
error();
}
}
}
Tem que haver um else
para todos os if
s. Existe uma maneira melhor de lidar com este cenário?
Gostaria apenas de fazê-lo como este:
void callAll(){
if(method1() && method2() && method3()){
// all passed
} else {
error();
}
}
Java curto-circuitos a &&
operação lógica tão falha em um método anterior aqui vai impedir a execução do próximo.
Se em error()
que você precisa saber qual dos métodos falharam, você poderia declarar um campo de mensagem de erro para armazenar as informações dentro da classe e defina seu valor correspondente a falha:
private String errorMessage;
//...
boolean method2() {
// something went wrong
errorMessage = "Failed to do method2 stuff";
}
São a maneira mais elegante para alcançar o mesmo seria usar a Cadeia de padrão de design responsabilidade e encapsular os métodos boolean em seus próprios objetos manipuladores. Fazer isso seria, contudo, exigir mais refatoração para o código que você tem atualmente e mais informações sobre o seu caso de uso específico.