Cuando estaba tomando CS en la universidad (mediados de los 80), una de las ideas que se repetía constantemente era escribir loops que prueban en la parte superior (mientras ...) en lugar de en la parte inferior (hacer ... mientras) del bucle. Estas nociones a menudo se respaldaron con referencias a estudios que demostraron que los bucles que se probaron en la parte superior fueron estadísticamente mucho más probables de ser correctos que sus contrapartes de pruebas de fondo.¿Bucles de prueba en la parte superior o inferior? (mientras que vs. do while)
Como resultado, casi siempre escribo loops que prueban en la parte superior. No lo hago si introduce complejidad adicional en el código, pero ese caso parece raro. Noté que algunos programadores tienden a escribir casi exclusivamente bucles que se prueban en la parte inferior. Cuando veo construcciones como:
if (condition)
{
do
{
...
} while (same condition);
}
o el inverso (if
dentro del while
), hace que me pregunte si realmente escribieron esa manera o si se agregaron la declaración if
cuando se dieron cuenta del bucle no manejar el caso nulo.
He hecho algunas búsquedas en Google, pero no he podido encontrar ninguna literatura sobre este tema. ¿Cómo pueden ustedes (y chicas) escribir sus loops?
"estadísticamente mucho más probable que sea correcto" Olvide las estadísticas. La prueba de una condición superior es simple. La prueba de una condición de fondo de ciclo es mucho más compleja. –
Pregunta relacionada: http://stackoverflow.com/questions/224138/infinite-loops-top-or-bottom – CesarB
Tuve un profesor de CS alrededor de 1997 proclamando que sus dos opciones en la programación eran C o Pascal, y que debe elegir Pascal porque no le permitió incrementar los contadores de bucle desde el interior del bucle. Él pudo haber tenido razón, pero ¿estaba equivocado? – MusiGenesis