2012-06-28 2 views
0

두 개의 매개 변수, 즉 bool1과 bool2가있는 메소드가 있습니다. 물론 둘 다 부울입니다. 이 모든 조건을 조합하여 코드를 처리해야합니다./다른 경우 중첩 된 사용하여 다음 작업을 수행하는 더 나은 방법입니다두 개의 bool 조건의 조합을 처리하는 더 좋은 방법은 무엇입니까?

if (bool1) 
{ 
    if(bool2) 
    { 
    } 
    else 
    { 
    } 
} 
else 
{ 
    if(bool2) 
    { 
    } 
    else 
    { 
    } 
} 
+2

네 가지 별개의 조건이 있습니까? 이것은 아마도 당신이 그것을 쓸 수있는 가장 깨끗한 방법 일 것입니다. –

답변

5
if (bool1 && bool2) { } 
else if (bool1) {} 
else if (bool2) {} 
else {} 
+2

captcha에서 지연됨 :) – Neo

6
var bothAreTrue = bool1 && bool2; 

if(bothAreTrue){ 

}else if(bool1){ 

}else if(bool2){ 

}else{ //none is true 

} 
+0

어떻게 이런 일이 더 쉬워 집니까? 여전히 같은 수의 조건을 가지므로 하나는 적지 만 하나의 변수가 더 많이 사용됩니다. – Blood

+0

변수는 가독성을위한 것으로 (물론 압축 될 수 있음) 여러 if 문을 중첩하지 않는 것이 좋습니다. – cederlof

+0

메모리 낭비. 변수'bothAreTrue'는 한 곳에서만 생성되고 사용됩니다. 그런 다음 왜 만들어야합니까? 'if (bool1 && bool2)'로 사용할 수 있습니다. –

0

이 조건으로 기록 될 수 솔직히 말해서는 .. 두 번째 조건으로

if (bool1) 
{ 
} 

if (bool2) 
{ 
} 

것 첫 번째 조건의 결과에 관계없이 실행됩니다. 더 많은 문맥으로 문제를 설명하거나 실제 사례를 들려 줄 수 있습니까?

철학 "구현을 통해 정책"을 유지에
+0

질문 코드를 다시 살펴보십시오. 그것은 4 가지 결과에 대한 테스트입니다. '진실한 진실','진실한 거짓','틀린 거짓','틀린 진실'. 나는 각 결과가 다른 것을 할 것이라는 점을 암시한다고 생각한다. –

1

당신이 만들 수있는, (코드가없는 그것을 어떻게하고 있는지을 무엇을하고 있는지 나에게 에게) 그것은 논리 값 a를 숨김으로써 더 읽기 작은 :

public enum WhatBool1AndBool2ActuallyMean 
{ 
    WhatItMeansWhenBothAreTrue, 
    WhatItMeansWhenOnlyBool1IsTrue, 
    WhatItMeansWhenOnlyBool2IsTrue, 
    WhatItMeansWhenNeitherAreTrue 
} 

public WhatBool1AndBool2ActuallyMean GrokMeaning(bool bool1, bool bool2) {...} 

... 

WhatBool1AndBool2ActuallyMean meaning = GrokMeaning(bool1, bool2); 
switch(meaning) 
{ 
    case WhatBool1AndBool2ActuallyMean.WhatItMeansWhenBothAreTrue: 
     ... 
     break; 
    case... 
} 
+0

흥미로운 솔루션. 어떤 경우에는 이것이 의미가있을 수도 있지만, 다른 것들에서는 아마도 사물을 복잡하게 만들 것입니다. 내가 직관적으로 볼 수있는 적어도 하나의 경우는 Octree 로의 포인트 집합 공간 분할입니다. –

+0

필자는 가독성과 유지 보수성을 중요하게 생각합니다. 물론, 배관 코드가 더 많지만, 누군가가 무언가가 일어나거나 일어나지 않는 이유를 알아야 할 필요가있을 때, 그들은 결투 불린이 의미하는 바를 해독 할 필요가 없습니다. – bluevector

관련 문제