Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: RyogiShiki en 18 Mayo 2012, 01:41 am



Título: Sobre el uso de break y continue.
Publicado por: RyogiShiki en 18 Mayo 2012, 01:41 am
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


Título: Re: Sobre el uso de break y continue.
Publicado por: $Edu$ en 18 Mayo 2012, 01:50 am
Deja un ejemplo de mal uso a ver.. no veo como darle un mal uso a eso xD


Título: Re: Sobre el uso de break y continue.
Publicado por: Runex en 18 Mayo 2012, 02:38 am
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.


Título: Re: Sobre el uso de break y continue.
Publicado por: RyogiShiki en 18 Mayo 2012, 02:50 am
esto es hipotético pero a veces me he topado con cosas como:

Código
  1. while ( true ) {
  2.    if ( ... ) {
  3.        break;
  4.    } else {
  5.        if ( ... ) {
  6.            break;
  7.        } else {
  8.            continue;
  9.        }
  10.        continue;
  11.    }
  12.  
  13. }

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.


Título: Re: Sobre el uso de break y continue.
Publicado por: $Edu$ en 18 Mayo 2012, 03:35 am
Ah si, ahi si esta feisimo jajaja, pero hay de todo.. mientras vos programes bien mejor para ti xD


Título: Re: Sobre el uso de break y continue.
Publicado por: Saberuneko en 18 Mayo 2012, 14:24 pm
El problema viene cuando te toca revisar un source que viene en ese estado. x3


Título: Re: Sobre el uso de break y continue.
Publicado por: Roboto en 21 Mayo 2012, 13:27 pm
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.


Título: Re: Sobre el uso de break y continue.
Publicado por: Saberuneko en 21 Mayo 2012, 20:48 pm
No necesitas el break para eso.

Tan sólo pon la condición tal que

Código:
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).


Título: Re: Sobre el uso de break y continue.
Publicado por: Caster en 21 Mayo 2012, 20:57 pm
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.


Título: Re: Sobre el uso de break y continue.
Publicado por: $Edu$ en 21 Mayo 2012, 21:03 pm
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.


Título: Re: Sobre el uso de break y continue.
Publicado por: Saberuneko en 21 Mayo 2012, 21:23 pm
Si por funcionar, todo funciona... pero repito que mantener un código cargado de breaks (ya no pongamos los GOTOs) se puede volver más complicado que uno utilizando programación estructurada pura...

Especialmente si el programa que tienes que mantener proviene de alguien anterior.


Título: Re: Sobre el uso de break y continue.
Publicado por: $Edu$ en 21 Mayo 2012, 21:59 pm
Pero yo digo en el ejemplo de Galo, el dice hacer asi:

Para i desde 0 a 100
 Si array es igual a 4 entonces Existe = true, Break;

Mientras que vos decis usar un while.. como si fuera malo usar Break ahi. Y no le veo otra mejor forma, ya que con while te complicarias.

Estas cosas ya va en como es uno programando, no es lo mismo que cuando se debate si es mejor usar:

if ... then ..

if ... then...

O

if ... then ...
  else if ... then ..

En esto ultimo si podemos debatir porque el segundo ejemplo de ifs es el que demora menos ya que no verifica 2 veces.

Pero con los breaks, creo que va en gusto, esta mal que usen muchisimos breaks y sin sentido a veces, pero como dije, eso ya ni se debate, eso es ser malo y listo xD


Título: Re: Sobre el uso de break y continue.
Publicado por: Roboto en 21 Mayo 2012, 23:29 pm
yo en ese caso utilice un break pork hacia una llamada a una base de datos,y comprobaba si estaba el valor.
si estab en la posicion 4 por ejemplo,tiraba el break y cerraba conexion para k no consumiera recursos y fuera lento.

se podria hacer con un while,pero tendrias k poner en el propio while la condicion,y alomejor te interesa hacer varias condiciones k solo puedas hhacer con un if

if((var==4 && otravar=="algo")&& otravar2=="algo")
{

}


es por poner un ejemplo cutre.
ami me gusta hacer las comprobaciones dentro de un if,no dentro de un while.
creo k es puro gusto mas k nada.


Título: Re: Sobre el uso de break y continue.
Publicado por: Saberuneko en 22 Mayo 2012, 09:07 am
¡Hombre! Es que hay una diferencia más que considerable entre comprobar un ARRAY y una DB.

Evidentemente, si quieres comprobar varias condiciones, entonces sí puede ser que el break te venga mejor. Donde sí resulta un poco innecesario es si sólo vas a poner 1 o 2 condiciones de salida del tipo variable!=valor, trabajando sobre un ARRAY.

Por otro lado, cuando tienes varias condiciones y los IF se empiezan a acumular, suele ser el momento de pensar en una estructura tipo CASE, que bien usadas funcionan igual, ahorran código y pueden ser algo más rápidas de ver a la hora de revisar el code.

Un Saludo.