2014-04-07 2 views
0

이 같은 구성의 조건이있는 경우 문이있는 경우 :대체 긴 경우 문

if((condition 1) && (condition 2) && (condition 3))

을 내가 추가하려는 다른-경우 절 조건이 동일한 경우 만 그들 (의 마지막 하나를 가정 해 봅시다) 중 하나가 아닌 진정한 지금 거짓,이 일에 의지하지 않고도이를 표현하는 방법이 있습니다 :

if((condition 1) && (condition 2) && (condition 3)) 
{ 
    //Some code 
} 
else if((condition 1) && (condition 2) && !(condition 3)) 
{ 
    //Some code 
} 

나는 이것이이다 일을 생각할 수있는 유일한 방법 진실로하고 싶은 조건의 결과를 저장하십시오. 두 경우 모두 사전에 변수 사용 :

$x = (condition 1) && (condition 2) ? true : false;

을하지만이에 대한 더 나은 대안이 무엇입니까?

답변

1

중첩 할 수 있습니다 조건 :

if ((condition 1) && (condition 2)) { 
    if (condition 3) { 
     //Some code 
    } else { 
     //Some other code 
    } 
} 
+0

내 유일한 문제는 코드 복잡성 때문에 중첩 된 if 문을 사용하는 것이 그렇게 쉽지 않다는 것입니다. – user1849060

+0

나는이 문장에서 요점을 보지 못했다. 두 가지 대안이 있습니다 : 1. 복잡한 조건 또는 2. 복잡한 구조. 그 복잡성을 마술처럼 숨길 수는 없습니다. 시도 할 수도있는 것은 내부 부분을 별도의 기능으로 숨겨서 가독성을 높여 호출 범위를 짧고 깨끗하게 유지하는 것입니다. 그러나 객체 지향 접근법은 더 이해하기 쉽습니다. – arkascha

0

당신은

if((condition 1) && (condition 2)) 
    { 
    if (condition 3) 
    { 
    //Some code 
    } 
    else 
    { 
    //Some code 
    } 
    } 

으로 갈 수는 그러나, 나는 여기에 논리를 질문해야합니다. 조건 1과 2가 필요합니까? 그럼 당신은 수행하여 크게 그것을 단순화 수 :

if (!(condition 1)) 
    throw new Exception("Condition 1 didn't happen"); 

if (!(condition 2)) 
    throw new Exception("Condition 2 didn't happen"); 

if (condition 3) 
    { 
    //Some code 
    } 
else 
    { 
    //Some code 
    } 

당신은 당신의 상태에 따라 예외의 유형을 선택하거나, 어쩌면 전혀 예외를 던져 선택하지 않아야합니다. 그러나 이렇게하면 코드가 크게 단순 해집니다. 그리고 그것은 당신의 주된 목표가되어야합니다 : 투쟁의 복잡성. 여러 개의 중첩 된 조건문에 들어가기 시작하면 코드를 유지 관리 할 수 ​​없게됩니다.

+0

조건은 사용자 입력을 기반으로하며 항상 true가되는 것은 아니며 사용자가 입력 한 내용에 따라 다릅니다. 그래서 예 그들은 필요합니다. – user1849060