2012-10-05 3 views
-1

그냥 궁금하지만 난 호출해야합니다 (6 개) 기능을 가지고, 꽤 논리적으로 구분되는 경우 (이 경우, 특히 자바) 메소드를 호출하기위한 가장 좋은 방법메서드 호출을위한 최선의 방법은 무엇입니까?

내용은 다음과 같습니다

그렇게 말 ...

private void step1() { .. } 
private void step2() { .. } 
private void step3() { .. } 
private void step4() { .. } 

step1(); 
step2(); 
step3(); 
step4(); 

로 내 주요 방법으로 순차적으로 호출하는 나를 위해 더 나은가요 아니면 더 step1 함수의 끝에서 step2를 호출하면? 즉

private void step1() { 
    .. 
    .. 
    step2(); 
} 
+5

코드는 실제로 코드에 따라 다릅니다. – nullpotent

+1

나는 step2가 항상 step1 이후에 즉시 호출된다면 논리적으로 구별되지 않으며 단지 하나의 방법 일 수 있다고 주장한다. – geoffspear

+0

1 단계는 항상 2 단계를 수행 한 후에 즉시 수행합니까? –

답변

8

과장하지 마십시오.

첫 번째 옵션은 더 명확하고 읽기 쉽고 자기 설명 적입니다.

step1(); 
step2(); 
step3(); 
step4(); 

또는

try{ 
    step1(); 
    step2(); 
    step3(); 
    step4(); 
} catch (StepException e) { 
    // process failed 
    ... 
} 
+0

감각이 좋지만 step1()이 실패하면 나중에 다음 단계를 실행 하시겠습니까? – Rob

+0

그 가정은 질문에 언급되지 않았습니다. 그러나 나는 당신의 의견을 받아들이 기 위해 나의 대답을 향상시켰다. –

+0

사실이에요,하지만 제 대답에 캐치를 포함 시켰고 -2 점을 받았습니다. 여기에 제시된 모든 옵션이 가능하지만, 예를 들어 첫 번째 옵션이 실패 할 경우 다른 3 가지 메소드에서 코드 실행을 원하지 않는다고 가정했습니다. (내가 지금 당신의 답변을 뽑았습니다) – Rob

0

귀하의 질문은 충분한 컨텍스트 정보가 없습니다.

내가 일반적으로 말하는 것은 : 그 부품을 호출하는 메인 메소드를 사용하는 것이 더 좋다. 일반 프로세스가 구축되는 방식을 반영하기 때문입니다.

그러나 예외가있을 수 있습니다. 어쨌든 이러한 예외는 다른 방법으로 구현 될 수 있습니다 (예 : step1 코드는 주 코드로 구문 분석 한 다음 step2를 호출하는 코드를 반환합니다). 이 방법은 유용하지 않은 중간 호출로 스택이 청구되지 않습니다. 그리고 의미론은 더 잘 유지됩니다.

0

그들은 서로 의존하는지에 따라 다릅니다. 2 단계는 1 단계에 의존하는 경우에 당신이 그들이 다음 서로 첫 번째 의존 해달라고하면 발신자가 (가 공개되어 ESP 경우)

방법에 있어야한다는 암묵적인 지식을 제거

private void step1() { 
    .. 
    .. 
    step2(); 
} 

사용해야합니다 옵션이 더 간단합니다. 그들은 1 단계는 (논리적으로 구분되는 경우

) (2 단계를 호출해서는 안)

0

(이 나에게 냄새 나는 조금 보이는 나는이 시나리오에 대한 자세한 내용을 알고 싶네).

4 번만 전화하면됩니다.

0

step1과 은 논리적으로 구별되기 때문에 서로 다른 입력에 사용할 수 있다는 것을 의미합니다. 이제 어림짐작을 사용하면 단계를 적게 만들고 더 나은 방법으로 작업을 완료 할 수 있습니다.

먼저 다른 방법으로 다른 방법을 사용하는지, 똑같은 주장이 아닌지, 자신과 다른 사람이 코딩하는 사람이 이전 내용이 없으면 그 자체만으로도 꽤 많이 호출되는지 확인해야합니다. stepN 또는 최소한 모두없이. 그렇다면 그대로 유지하고 순차적으로 호출하는 것이 좋습니다.또 다른 후 항상 하나라고 stepN1stepN2stepN을 할 당신은 자기가 포함 된 논리적으로 별개의 방법을 얻을 수 있도록

하지 않으면, 코드를 리팩토링. 언제나 똑같은 인자를 가지고 메쏘드를 하나씩 호출하고, 그 메쏘드를 따로 따로 호출 할 필요가 없다면, 하나의 메소드로 만들고, 항상 한 조각으로 만 실행되는 코드를 병합하십시오.

당신이 step1의 코드 내에서 step2를 결합하면이 step1 그것은 당신이 정말로 병합해야 의미 의미에서 논리적으로 별개의 기능을 잃게 의미뿐만 아니라 거의 두 번째 단계를 실행의 컨텍스트 내에서만 사용할 수 의미 이 경우 두 개 또는 첫 번째 방법을 사용하십시오. 따라서 일반적으로 첫 번째 방법을 고수하고 케이스에 적용 할 경우 제안 된 방식으로 코딩을 개선하십시오! 예외가있는 경우 step1step2을 사용하여 만 완료하지만 step2 trully는 고유 한 기능을 가지고 있으며 프로그램 내에서 다른 용도로 사용할 수 있습니다. 그런 다음 두 번째 방법을 사용할 수 있습니다.

길 1 또는 길 2 일뿐만 아니라 작업에 맞게 혼합 할 수 있습니다. 그리고 성능은 내가 믿는 이슈가 아니다. (내가 틀렸다면 누구나 나를 고쳐 줄 수 있겠는가?)!

관련 문제