"else"는 매칭되는 "if"가 명확하게 보여야 합니다

 

중첩된 if/else 문이 중괄호 없이 작성되면 dangling else 문제가 발생합니다. 이런 경우, else가 가장 가까운 if와 연결되지만 사용사례가 불분명해지고 어쩔 때는 그냥 사용자가 들여쓰기가 잘못한 것일 수도 있습니다.

이 규칙은 중괄호가 없이 중첩된 if 문이 있어서 이해하기 어려운 else문법이 사용될 때 알림이 울립니다.

중괄호를 추가하는 것이 일반적으로 코드를 더 명확하게 만드는 방법입니다. (규칙 {rule:java:S121} 참조) 그리고 dangling else 상황에서도 코드의 의도를 더 명확하게 만듭니다.

규칙을 어긴 코드

if (a)
  if (b)
    d++;
else     // 규칙을 어긴 코드, "else"는 "if(a)"에 연결된 걸까요? "if (b)"에 연결된 걸까요? (정답은 "if(b)"입니다)
  e++;

규칙을 준수한 해결책

if (a) {
  if (b) {
    d++;
  }
} else { // 규칙을 준수한 해결책, else 블락이 "if(a)"와 연결되는게 확실합니다
  e++;
}

같이보면 좋은 자료

  • https://en.wikipedia.org/wiki/Dangling_else

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project