以下看起来像凌乱的代码,但我想不出如何使它更整洁。有任何想法吗?我想调用doSearch的值为10,20和30.如果没有返回值的结果,那么我想尝试以下值。否则,退出。我知道这会起作用,但它是最可读的方式吗?
SearchResult result = doSearch("10");
if (result.getResults() == null) {
result = doSearch("20");
if (result.getResults() == null) {
result = doSearch("30");
if (result.getResults() == null) {
// put code to deal with lack of results here
}
}
}
答案 0 :(得分:4)
这是一个建议:
SearchResult result = null;
for (String attempt : "10,20,30".split(","))
if ((result = doSearch(attempt)) != null)
break;
if (result == null) {
// put code to deal with lack of results here
}
(正如Marko Topolnik在评论中所建议的那样。)
答案 1 :(得分:2)
您可以将搜索字符串存储在String []中,然后遍历数组并调用doSearch()。
答案 2 :(得分:1)
int [] searchValues = {10, 20, 30};
for(int i=0; i<searchValues.length; i++) {
SearchResult result = doSearch(searchValues[i]);
if (result.getResults() != null) {
return result;
}
}
// put code to deal with lack of results here
答案 3 :(得分:1)
我会选择这样的事情:
SearchResult result = null;
for (int i=10; i<=30 && result == null; i+=10) {
result = doSearch(i);
}
if (result == null) {
// throw a meaningful business exception here
}
由于数字是数字,我不认为迭代它们的字符串表示是个好主意。