Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/07/2008, 06:44
guille_el3
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: ¿Es "correcto" cortar un bucle?

Coincido en la diferencia conceptual entre ambos...
En la práctica me inclino por aquel que exprese más lo que estoy pensando. Por ejemplo si pienso "mientras pase esto..." uso un while =P

while(esto){
...
}

El for básico ya practicamente no lo uso porque asumo que la construccion foreach que hay en muchos lenguajes me abstrae del trabajo de llevar un contador, tener que pensar si el índice comienza en 0 o en 1 dependiendo del lenguaje....

Con respecto a cortar los bucles en el medio no lo veo mal. Bah, es algo natural y a veces del algoritmo. Cuando reflejas en el código la forma en que lo piensas normalmente terminas cortando en el medio.
Por ejemplo, quieres saber si algún objeto de una colección es feliz, una vez que sabes que uno es feliz, ya está, terminaste, no hace falta que evalues el resto:

Código:
foreach(ObjetoFelicidable felicidable in felicidables){
    if (felicidable.esFeliz()) return true;
}
return false;
Pero ojo, que siempre que hagas cortes en medio un bucle o mismo en una función/método debes asegurarte que eso no tenga efectos en el resto del código. Por ejemplo, te planteo:

Código:
foreach(ObjetoFelicidable felicidable in felicidables){
    objetoLogueador.log("la lista de felicidables contiene a" + felicidable.ToString());
    if (felicidable.esFeliz()) return true;
}
return false;
En ese caso si cortas en el medio probablemente parte de tu colección quedaría sin loguearse, y si lo que quieres es loguear a todos no esta bueno.

Igualmente ese es problema de que el código hace 2 cosas completamente distintas y no está bueno :P.
__________________
Saludoss
Guille