2016-06-14 9 views
4

중첩 된 if 문은 분명히 허용됩니다. 그래서 그들에게는 적절한 사용이있을 것 같습니다. 모두는 그 (것)들에 싫어하고, 진술이 행동의 제일 과정 인 경우에 중첩 할 시간이 있는지 생각해보고 있었다. 여기가 중첩 문을 사용하는 것이 가장 수 있습니다 생각의 예 : 다음과 같이 내가하지 둥지에이 코드를 시도한다면중첩 된 If 문 적절하게 사용

if (A){ 
    //Code for A 
    if (B){ 
     //Code for B 
    } else { 
     //Code for !B 
    } 
    //More A Code 
} else { 
    //Code for !A 
    if (C){ 
     //Code for C 
    } else { 
     //Code for !C 
     if (D){ 
      //code for D 
     } 
    } 
} 

는,이 될지는 :

if (A&&B){ 
    //Code for A 
    //Code for B 
    //More A Code 
} 
if (A&&!B){ 
    //Code for A 
    //Code for !B 
    //More A Code 
} 
if (!A&&C){ 
    //Code for !A 
    //Code for C 
} 
if (!A&&!C&&D){ 
    //Code for !A 
    //Code for !C 
    //Code for D 
} 
if (!A&&!C&&!D){ 
    //Code for !A 
    //Code for !C 
} 

이를 실제로 코드를 넣고 여분이 생길 때까지는 처음에는 더 깔끔하게 보입니다. 이는 악몽입니다.

if (A){ 
    //Code for A 
} 
if (A&&B){ 
    //Code for B 
} 
if (A&&!B){ 
    //Code for !B 
} 
if (A){ 
    //More A Code 
} 
if(!A){ 
    //Code for !A 
} 
if(!A&&C){ 
    //Code for C 
} 
if(!A&&!C){ 
    //Code for !C 
} 
if(!A&&!C&&D){ 
    //Code for D 
} 

이 방법은 중첩 문을 사용하지 않고, 코드를 재 작성이 필요하지 않지만, 원래보다 더 많은 경우() 인스턴스를 조건을 overuses하고있다. 또한, B가 A가 참인 경우에만 평가된다는 것을보기 위해 감추는 것보다 더 많은 독해를해야합니다. 그리고 나서 if(A&&C)을 하단에 붙이면 유지 보수가 어려워집니다.

중첩 된 if 문은 가장 작은 인스턴스가 if()이므로 나에게 가장 합리적인 것 같습니다. 모든 사람들이 중첩 된 if 문을 싫어하는 이유를 이해할 수 없습니다. 누구든지이 코드를 작성하는보다 실질적인 방법이 있습니까? 아니면 중첩 된 if에 대해 사람들이 의미하는 바를 오해합니까?

if(A){ 
    if(B){ 
     //Do Something 
    } else { 
     //Do Something Else 
    } 
} else { 
    //Do Third thing 
} 

대기가 ... 아니, 그 사람이 여전히 단축하려고 if()의 이상의 인스턴스를 사용합니다 : 중첩 된 IFS에 관한 모든 질문과 같은 제 1 층에는 코드가없는 것으로 보인다. particular example 나는 두 개의 똑같은 성명을 가지고 있다고 생각했다. Anywhere는 적절한 중첩 된 if 문에 대한 이러한 예제입니까? 아니면이 코드를 작성하는 데 더 나은/명확한 /보다 명확한/더 빠르고/표준적인 방법이 있습니까?

+3

잘 작성된 중첩 된 if에 대해서는 이의가 없습니다. – mplungjan

+0

추신 : 당신은 동시에 upvoted 및 화제 끄기 :) – mplungjan

+0

기다려 ... 내가 어떻게 주제 떨어져있어? 내가 아니라고 주장하지 않고, 어떤 특성으로 인해 주제를 알 수 있는지 알고 싶습니다. – RoboticRenaissance

답변

0

중첩 된 if 문은 불필요한 경우 싫어합니다. 자주 complex 코드로 변환 할 수있는 방법이 있지만 때로는 분명하지는 않지만 그래도 가능합니다. 그러나 문제가 essentially complex 인 경우 중첩 된 if 문은 완전히 인코딩 할 수 있습니다.