Mon collègue m'a montré ce code et nous nous sommes demandés pourquoi nous ne semblions pas pouvoir supprimer le code dupliqué.
private List<Foo> parseResponse(Response<ByteString> response) {
if (response.status().code() != Status.OK.code() || !response.payload().isPresent()) {
if (response.status().code() != Status.NOT_FOUND.code() || !response.payload().isPresent()) {
LOG.error("Cannot fetch recently played, got status code {}", response.status());
}
return Lists.newArrayList();
}
// ...
// ...
// ...
doSomeLogic();
// ...
// ...
// ...
return someOtherList;
}
Voici une représentation alternative, pour le rendre un peu moins verbeux:
private void f() {
if (S != 200 || !P) {
if (S != 404 || !P) {
Log();
}
return;
}
// ...
// ...
// ...
doSomeLogic();
// ...
// ...
// ...
return;
}
Existe-t-il un moyen plus simple d’écrire ceci sans dupliquer les !P
? Sinon, y a-t-il une propriété unique dans la situation ou les conditions qui empêche de factoriser les !P
?