如何简化这组 if 语句?(或者,是什么让它感觉如此尴尬?
我的同事向我展示了这段代码,我们都想知道为什么我们似乎无法删除重复的代码。
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;
}
下面是一个替代表示形式,以使其不那么冗长:
private void f() {
if (S != 200 || !P) {
if (S != 404 || !P) {
Log();
}
return;
}
// ...
// ...
// ...
doSomeLogic();
// ...
// ...
// ...
return;
}
有没有更简单的方法来编写它,而不会重复?如果不是,那么关于情况或条件是否有一些独特的属性,使得无法排除?!P
!P