use*_*985 0 java if-statement coding-efficiency
我有这个if else代码,我想知道是否有更多有用/智能的方式来编写它:
public void saveContent() throws Exception {
if(book.isColored()) {
book.setChoosen(“1234”);
} else if (book.isAvailable()) {
book.setChosen(“23498”);
} else if (book.isAdults()) {
book.setChosen(“0562”);
} else {
ReaderResponse response = reader.getReaderResponse();
if (response != null) {
book.setChosen(response.getName());
}
} else {
book.setChosen(“4587”);
}
}
}
Run Code Online (Sandbox Code Playgroud)
该方法返回void.
在中间引入局部变量会导致问题.解决这个问题的一种方法是引入另一种方法 - 不要害怕小方法.
public void saveContent() throws Exception {
book.setChoosen(
book.isColored() ? “1234" :
book.isAvailable() ? “23498” :
book.isAdults() ? “0562” :
readerResponse()
);
}
private String readerResponse() throws Exception {
ReaderResponse response = reader.getReaderResponse();
return response == null ? “4587” : response.getName();
}
Run Code Online (Sandbox Code Playgroud)
? : 是条件运算符,通常称为三元运算符.
如果getReaderResponse没有副作用,您可以重复通话.get方法通常没有副作用,但我觉得这个人可能会这样做.我不确定Exception抛出的位置 - 我认为这是用于替换子类型.