Foro de elhacker.net

Programación => Java => Mensaje iniciado por: arts en 24 Octubre 2013, 01:14 am



Título: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: arts en 24 Octubre 2013, 01:14 am
Hola a todos de nuevo, xD.
Quería saber porque no es bueno utilizar return o break dentro de un bucle para salir de estos si ya has encontrado la letra, palabra dentro de una cadena por ejemplo, yo si lo encontraba devolvía el índice donde se había encontrado, de lo contrario devolvía -1 ya fuera del bucle y al corregirlo nos dicen que es una mala práctica de programación sin más explicación. ¿ Alguien sabe el por que ?. ¿ Es que antes no existían los return o break y por eso quieren que lo hagamos de otra forma ?.


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: тαптяα en 24 Octubre 2013, 01:15 am
Mejor hacer while con condiciones.


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: arts en 24 Octubre 2013, 01:34 am
Si, pero esperaba alguna explicación tipo es que hace menos evaluaciones en el código mejorando su rapidez, o puede dar problemas si se usa x cosas también o algo, no un simple es mejor usar while(cond1 y cond2parasalir) porque si :/ .


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: visualfree en 24 Octubre 2013, 13:40 pm
La respuesta se debe a que cada bucle tiene un "Fin" y no deberias forzar su termino, en definitiva estas rompiendo el para que fue creado.

Saluda Atte.

 


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: #!drvy en 24 Octubre 2013, 15:40 pm
No se si va asociado específicamente con Java o no.. pero romper un bucle no tiene nada de peligroso ni malo.... de hecho no se que tal estará en java, pero en PHP por ejemplo, si rompes el bucle porque no lo necesitas mas, evitas que se procese el resto de información, resultado en ahorrar recursos/procesador y tiempo.

Ahora si lo rompes para todo.. pues si es malo. Lo correcto seria romperlo solo cuando haga falta realmente.

Aquí tienes una respuesta (en ingles) asociada a java.
http://stackoverflow.com/questions/18188123/is-it-bad-practice-to-use-break-to-exit-a-loop-in-java

Si fuese mala practica.. no existira break... esta hecho precisamente para eso -_-
¿ Sabe tu profesor de lo que habla ?

Saludos


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: kaostias en 24 Octubre 2013, 19:31 pm
El problema de los break es que en ocasiones hacen mucho más compleja la lectura del código, y el código tiene que ser escrito para que sea óptimo, pero también para que sea leído


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: Mitsu en 24 Octubre 2013, 19:52 pm
Que yo tenga entendido, return se usa para indicar la salida de un metodo no de un loop. Para un loop se usa break.

Ejemplo:

Código
  1. public class Hola {
  2.  
  3. public void algo() {
  4. for (int i=0; i<5; i++) {
  5. if(i==3){
  6. return;
  7. }
  8. }
  9. System.out.println("Yo no me ejecuto.");
  10. }
  11.  
  12. public static void main(String... args){
  13. new Hola().algo();
  14. }
  15. }
  16.  


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: arts en 24 Octubre 2013, 19:53 pm
Vale ahora lo entiendo, es un tema más bien que hace referencia a la legibilidad y coherencia de las estructuras. Lo que me hace pensar que un for está hecho para ir desde el principio hasta el final y while para recorrer desde el principio y condición que permita salir antes de llegar al final.
Ok gracias ;) por cierto creo que estoy aprendiendo aquí por el foro más que en clases xD.


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: robertofd1995 en 26 Octubre 2013, 22:28 pm
Que yo tenga entendido, return se usa para indicar la salida de un metodo no de un loop. Para un loop se usa break.

Ejemplo:

Código
  1. public class Hola {
  2.  
  3. public void algo() {
  4. for (int i=0; i<5; i++) {
  5. if(i==3){
  6. return;
  7. }
  8. }
  9. System.out.println("Yo no me ejecuto.");
  10. }
  11.  
  12. public static void main(String... args){
  13. new Hola().algo();
  14. }
  15. }
  16.  

rdyoy aprendiendo programacion , estoy en primero de carrera , no se si es porq es un ejemplo , o por que es asi , pero no te faltaria declarar i , ya fuese como atributo , o como una variable local , que significa i++ ?


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: тαптяα en 27 Octubre 2013, 14:04 pm
Incrementa el valor de i, a posteriori.

Seria como hacer i = i +1;


Título: Re: ¿ Por que los return no deben encontrarse dentro de los bucles ?
Publicado por: Mitsu en 27 Octubre 2013, 16:05 pm
Ya te respondió  тαптяαпсє.


Si te fijas bien en el bucle:

Código
  1. for (int i=0; i<5; i++) {
  2. if(i==3){
  3. return;
  4. }
  5. }
  6.  

Estoy declarando i como variable local del bucle for. Esto es, que esa variable solo existirá mientras itere el bucle. La razón es simple, no necesito cargar esa variable en la memoria.

Si hiciera algo como:

Código
  1. public class MiClase {
  2.  
  3. private int i=0; // variable de clase.
  4.  
  5.  

La variable i existiría todo el tiempo y por lo tanto, estaría todo el tiempo en el Stack de la JVM inncesariamente. Esto no suele ser un problema con pequeños grupos de variables. Lo importante es analizar el problema, y determinar qué variables son necesarias para toda la case, y cuáles son necesarias solo para el bloque (método, bucle) para las necesitarán.