3

以下看起来像杂乱的代码,但我想不出如何使它更整洁。有任何想法吗?我想为 10、20 和 30 的值调用 doSearch。如果没有返回值的结果,那么我想尝试以下值。否则,只能退出。我知道这会起作用,但它是最易读的方式吗?

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
    }
  }
}
4

4 回答 4

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 在评论中所建议的那样。)

于 2012-05-23T09:55:11.830 回答
2

您可以将搜索字符串存储在 String[] 中,然后遍历数组并调用 doSearch()。

于 2012-05-23T09:53:36.213 回答
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
于 2012-05-23T09:55:18.743 回答
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
}

由于数字是数字,我不认为遍历它们的字符串表示是一个好主意。

于 2012-05-23T10:16:08.340 回答