Sobre el uso de break y continue.

Iniciado por RyogiShiki, 18 Mayo 2012, 01:41 AM

0 Miembros y 1 Visitante están viendo este tema.

RyogiShiki

Hola gente!

Bueno quería preguntarles, ustedes que piensan acerca del uso de break y continue durante la ejecución de un loop, lo consideran una buena práctica? o por el contrario una práctica abominable al generar un flujo de ejecución irregular?

Como suelen usar ustedes estas dos?.

Talvez una de las opiniones con las que me siento más cómodo es decir que el uso en reducidas cantidades está bastante bien, y no supone mayor problema, pero un uso extensivo puede claramente terminar en código spaghetti.

Espero sus opiniones.

Saludos


$Edu$

Deja un ejemplo de mal uso a ver.. no veo como darle un mal uso a eso xD

Runex

No me gustan los saltos en los loops y como dices tú, tampoco el código spaghetti.

Y ya ni hablemos del goto, eso ya si es el acabose, sobre todo el dolor de ojos que te deja cuando ves  programas llenos de saltos de este tipo.

De todas formas, a pesar de ser malas prácticas hay en ocasiones que no hay más remedio que usarlos, en especial el break en los switch de C, aunque hay técnicas de sobra para evitar su uso :).

Un saludo, Runex.
"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".

RyogiShiki

#3
esto es hipotético pero a veces me he topado con cosas como:

Código (cpp) [Seleccionar]
while ( true ) {
   if ( ... ) {
       break;
   } else {
       if ( ... ) {
           break;
       } else {
           continue;
       }
       continue;
   }
       
}


Esto es simplemente spaghetti! ilegible, dificil de entender, poco escalable, dificil de mantener y debuggear.
Digamos que se vuelve ilegible usar tambipen continue y break en loops que se hacen bastante grandes y que de por si ya son complejos como para agregarles un interruptor en el flujo de ejecución.

Cosas de ese estilo que generan flujos de ejecución irregular que a veces se difuminan y se parecen más a un goto.


$Edu$

Ah si, ahi si esta feisimo jajaja, pero hay de todo.. mientras vos programes bien mejor para ti xD

Saberuneko

El problema viene cuando te toca revisar un source que viene en ese estado. x3

Roboto

hace 2 dias use un break.

tenias k comprobar un arraylist con elementos.
imaginate k el arraylist Y/o Array en otro lenguaje de programacion tiene 100 elementos.

y kieres comprobar k dentro de ellos no haya un 4.

si la posicion del array  ARRAY[0]==4.
se cumple la condicion,problema,como hay 100 elementos,tiene k hacer el bucle 99 veces mas,aun sabiendo k la condicion ya se da.

por eso se mete un break; para evitar k siga esas 99 veces el bucle.

Saberuneko

#7
No necesitas el break para eso.

Tan sólo pon la condición tal que

WHILE ARRAY[count] != 4 AND count > 99

Si aparece un 4 o alcanzas el 100, el proceso sale del bucle.

Poner un break dentro de una estructura de control suele ser innecesario en la mayoría de los casos si usas las estructuras de control correctamente. (Excepto las CASE).

Caster

Pues me gustarña que opinaseis sobre este tema, en el libro que estoy leyendo sobre C, acabo de empezar las funciones y el ultimo tema iba sobre las estructuras de control y trataba esto, pero no decia que fuese mejor evitarlo no como el goto que si te advierte de que te enseña su funcionamiento como uso ilustrativo, que es mejor evitarlo.

$Edu$

Habria que ver como quedan los codigos pasados a ASM, para ver cual sirve mas, porque yo un break para cuando hay que hacer algo como dijo Galo, lo uso siempre y tambien el continue. Por algo estan.