2009-12-12 3 views
5

인터넷 어디서나 자바에서 레이블 문을 사용하지 않는 것이 좋습니다. 그러나, 나는 그것들이 중첩 된 루프 인 경우에 매우 유용하다고 생각한다.
사용하지 않는 이유에 대한 만족스러운 답변을 찾을 수 없습니다. 나는 레이블에 대한 대안이 종종 가독성 또는 성능 또는 둘 다를 감소시키는 것으로 생각한다.Java Label Statement를 사용하지 않는 이유는 무엇입니까?

그래서 무엇이 라벨이 붙은 break와 continue 문을 그렇게 나쁘게 만드나요?

+0

중복으로 보입니다. Check this sateesh

+0

http://stackoverflow.com/questions/46496/ –

+0

나는 당신이 당신의 의견대로, 라벨을 사용하는 경우를 보여주는 몇 가지 코드를 제공하면 이것은 훨씬 더 흥미로운 토론이 될 것이라고 생각합니다. – Buhb

답변

9

라벨은 중첩 된 for-loops에서 빠져 나올 수 있습니다.

 

PS : 개인적으로, 나는 좋을 것 별도의 방법으로 중첩 루프를 넣고 return와 함께 탈옥 (그리고 나는이에 켄트 벡 (Kent Beck)에 따라 오전, 자신의 implementation patterns 책을 참조) 그러나 그것은 나에게 "단일 복귀 점"사람들의 분노를 던져 줄 것이다. 인터넷, 오, 인터넷.

+2

+1 좋은 충고 특히 종교적 난센스에 대한 경멸. –

1

라벨이있는 휴식 및 continue 문이 모두 불필요하다는 것을 알았습니다. 그것은 단지 스타일 일뿐입니다. 동일한 결과를 얻는 다른 방법이 있으며 많은 사람들이이를 선호합니다.

0

메서드가 한 가지만하고 한 가지만 수행하면 레이블을 피할 필요가 없습니다.

그러나 레이블이있는 나누기 및 계속 명령문이 필요한 경우 메서드가 여전히 응집력이 있으면 빠른 정신 검사를 수행하십시오.

1

가장 일반적인 주장은 처음에는 해석하기가 어렵다는 것입니다. 또 다른 주장은 (너무 많은) 네스트 된 루프가 나쁜 습관으로 간주된다는 것입니다. 즉, 레이블을 볼 때 중첩 루프가 거의 확실하여 레이블이 암시 적으로 나 빠지게됩니다. 일반적인 방법은 중첩 루프가 메소드로 리팩토링된다는 것입니다. 이렇게하면 유지 보수성과 그 밖의 다른 것들이 향상됩니다. 그러나 중첩 된 루프가 몇 줄의 코드에서 명백한 것보다 다른 일을하지 않는다면 내 생각에 완벽하게 합리적인 가격입니다.

관련 문제