No entiendo de dónde viene esta regla "no usar etiquetas". Al realizar una lógica de bucle no trivial, la prueba para interrumpir o continuar no siempre es clara al final del bloque circundante.
outer_loop:
for (...) {
// some code
for (...) {
// some code
if (...)
continue outer_loop;
// more code
}
// more code
}
Sí, casos como este suceden todo el tiempo. ¿Qué es lo que la gente sugiere que use en su lugar? Una condición booleana como esta?
for (...) {
// some code
boolean continueOuterLoop = false;
for (...) {
// some code
if (...) {
continueOuterLoop = true;
break;
}
// more code
}
if (continueOuterLoop)
continue;
// more code
}
¡Yuck! Refactorizando como un método no alivia que:
boolean innerLoop (...) {
for (...) {
// some code
if (...) {
return true;
}
// more code
}
return false;
}
for (...) {
// some code
if (innerLoop(...))
continue;
// more code
}
Claro que es un poco más bonito, pero sigue pasando alrededor de un valor lógico superfluo. Y si el bucle interno modificó las variables locales, la refactorización en un método no siempre es la solución correcta.
¿Por qué todos ustedes están contra las etiquetas? Dame algunas razones sólidas y alternativas prácticas para el caso anterior.
* Actualización cuatro años después: * Hay una tendencia creciente hacia los lenguajes funcionales como Scala y Clojure en los que el consejo de no utilizar etiquetas es válido por una buena razón. Pero para Java normal, mi respuesta anterior sigue en pie. –
Y javascrpt, así como cualquier lenguaje basado en eventos. Por lo tanto, para los frijoles podría no ser tan útil, a menos que fuera parte de algún muy (probablemente demasiado) manejo de eventos. – Cheruvim
Es curioso que la respuesta más votado no responde en absoluto a la pregunta original. ("* Me preguntaba cuál era la convención común para las etiquetas. Todas mayúsculas? ¿Primera tapa? *") – Jonik