2014-06-05 1 views
0

이것은 올바른 코드 스타일에 관한 질문입니다. 이전 메서드가 false 인 경우 실행할 수없는 메서드가 두 개 있다고 가정 해 보겠습니다.종속적 인 큐잉 방법의 적절한 (또는 다른) 방법

어떻게 적절하게 작성할 수 있습니까 (또는 "적절한"방법이 없을 경우 적어도 다른 하나의 방법이있을 수 있습니다). 이렇게 나무가 크고 커지면 아래처럼이 나무를 만들 필요가 없습니다.

class Client 
{ 
    static void Main() 
    { 
     if(Connect()) 
     { 
      if(Fetch()) 
      { 
       if(Parse()) 
       { 
        Print(); 
       } 
      } 
     } 
    } 

    bool Connect() { ... } 

    bool Fetch() { ... } 

    bool Parse() { ... } 

    void Print() { ... } 
} 
+0

책임 패턴의 사슬이 문제 http://en.wikipedia.org/wiki/Chain-of에 applicale겠습니까 사용할 수 있습니다 -responsibility_pattern – 3dd

+1

'if (Connect() && Fetch() && Parse()) {Print(); }' – Dirk

답변

0

당신은 대의원의 무리 받아들이는 방법을 포장 수 :

public bool AllTrue(params Func<bool>[] methods) { 
    foreach (var method in methods) { 
     if (!method()) 
      return false; 
    } 
    return true; 
} 

을 .. 그리고 다음과 같이 호출 :

if (AllTrue(Connect, Fetch, Parse)) { 
    Print(); 
} 

이 논리적 AND를 체인에 비해 애호가입니다 당연하지. 당신이 그것을 반환의 경우 조건 여기

If (Connect() && Fetch() && Parse()) 

이 조건 먼저 체크 연결() 메소드의 값이 거짓 다음 확인하려고하지 않을 경우 하나의 경우 모든 상태를 확인할 수 있습니다 상태 경우 대신 쓰기 다수의

0

다른 조건.

0

이 시나리오에서는

static void Main() 
{ 
    if(Connect() && Fetch() && Parse()) 
    { 
     Print(); 
    } 
} 

또는

static void Main() 
{ 
    if(!Connect()) 
     return; 
    if(!Fetch()) 
     return; 
    if(!Parse()) 
     return; 
    Print(); 
} 
관련 문제