2012-12-19 4 views
5

많은 반복을 통해 매우 큰 메소드를 리팩토링하고 있습니다.루프에서 호출 된 메소드가 중단됩니다.

if (count > maxResults){ 
     // Send error response 
     sendResponse(XMLHelper.buildErrorXMLString("Too many results found, Please refine your search"), out, session); 
     break; 

을 나는 방법으로이 압축을 풀은 현재이 하나의 방법으로 3 번 발생하기 때문에,하지만 난 그렇게 할 때 나는 얻을 : 포함 루프 동안

는 방법은 많습니다 더 이상 루프 내에 있지 않으므로 중단시 오류가 발생합니다. 문제는 while 루프에서 벗어날 필요가 있지만 최대 결과에 도달 할 때만 발생한다는 것입니다.

제안 사항?

+2

이유는 단순히 반환하지? –

답변

3

이 방법은 가정 즉 :

public boolean test(int count, int maXResult) { 
if (count > maxResults) { 
     // Send error response 
     sendResponse(XMLHelper.buildErrorXMLString("Too many results found, Please refine your search"), out, session); 
     return true; 
     } 
return false; 
} 

전화 방법으로 루프에서 :

while(testCondition) { 
    if (test(count, maxResults)) { 
    break; 
    } 
} 
+0

고마워, 나는 분명하지 않았다. – Carasel

+0

가끔은 일어납니다 :) 도와 드리겠습니다. – Amber

3

이것은 직접 할 수 없습니다.

해결책을 찾았으므로 더 이상 검색 할 필요가 없기 때문에 가장 자주 중단하고 싶습니다. 호출 된 함수에서 성공했음을 나타냅니다. 예를 들어 결과를 반환하거나 성공을 나타내는 부울을 반환합니다. 함수가 성공을 반환하면 중단됩니다.

+0

가능할지라도 코드는 이해하기 어려울 것입니다. – jmrodrigg

+0

전혀 아닙니다. 이 함수는 작업을 수행합니다 (예 : 작업이 성공했는지 또는 충분한 시간에 작업을 수행했는지 결정). – Thirler

+0

Thirler에게 감사드립니다. 내가 필요한 것. – Carasel

0

return을 사용하여 루프에서 break를 시도하십시오.

0

스릴러 말로는 직접 할 수 없습니다. 분명히 당신의 isTooManyResults 방법은이 방법에서 지금의 경우 너무 많은 결과가있는 경우 truefalse 그렇지 않으면

1

를 반환해야합니다

if(isTooManyResults(count)) { break; } 

: 당신은 방법의 일부를 추출하고 같은 뭔가를 할 수 while 루프 대신 값을 반환 한 다음이를 기반으로 중단합니다.

public bool refactoredMethod(parameters) 
{ 
    if (count > maxResults){ 
    // Send error response 
    sendResponse(XMLHelper.buildErrorXMLString("Too many results found, Please refine your  search"), out, session); 

    return true; 
    } 

    return false; 
} 
관련 문제