중첩된 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.