Douglas Crockfod dice que generalmente es mejor refactorizar el continue
dentro del ciclo.¿Por qué continuar en un ciclo es una mala idea?
¿Por qué se continúa considerando malo dentro de un bucle?
Douglas Crockfod dice que generalmente es mejor refactorizar el continue
dentro del ciclo.¿Por qué continuar en un ciclo es una mala idea?
¿Por qué se continúa considerando malo dentro de un bucle?
El efecto de continue
es de alguna manera comparable a goto
al comienzo del ciclo. Por lo tanto, hace que su código sea más difícil de entender, como goto
s.
-1 'if (...) {...} ...' es algo comparable a un 'goto' al final del bloque. En serio, ignorar ciegamente cualquier cosa que se parezca remotamente a un caso especializado de 'goto' es tan dañino como el uso excesivo de estructuras de control inadecuadas (por ejemplo, usar' goto' cuando existe una estructura de control de nivel superior para el problema en cuestión). – delnan
@delnan Hay una gran diferencia entre la ramificación condicional hacia abajo y la ramificación no condicional hacia arriba. Si alguna vez lees código de ensamblaje complejo, sabrás por qué. Dicho esto, usar 'goto' en realidad puede ser aceptable, pero solo para la derivación no condicional hacia abajo. A diferencia de 'continue', que está roto por diseño, ya que siempre se ramifica hacia arriba. La presencia de 'continue' es siempre una indicación de un bucle mal escrito, cada bucle que lo usa puede reescribirse de una mejor manera. – Lundin
El uso de continue
significaría que tiene condiciones insuficientes escritas en su while
.
En su lugar, debe utilizar if
dentro de su while
bucle, o agregue la condición en el while
bucle.
El uso de goto, break, continue, throw o return dentro del cuerpo del loop puede tener también el efecto no deseado. Aquí hay otro ejemplo donde el control de bucle y el cuerpo del bucle están estrechamente entrelazados. ¿Escribe 1, 2 y 3 como antes? ¿Estás seguro?
int value = 1;
for (;;++value)
{
cout << value << endl;
if (value != 4)
continue;
else
break;
}
Tal vez esté pensando que aconsejarle que no use declaraciones de devolución dentro de los cuerpos de bucle es demasiado celoso. ¿Realmente lo digo en serio? Si, lo hago. Las funciones que devuelven algo deben hacerlo a través de una declaración de retorno única al final de la función. Aquí hay algunas razones prácticas por las que:
de responsabilidad: No es mi materia, he hace referencia de nuevo a la fuente
ver también [Continúe de anidado, mientras que los bucles] (http://stackoverflow.com/ preguntas/1133408/continue-in-nested-while-loops). Hay muy poco que sea específico de C#, y muchas de las respuestas proporcionadas allí son excelentes. –