Al revisar, a veces me encuentro con este tipo de bucle:¿El último elemento en un ciclo merece un tratamiento separado?
i = begin
while (i != end) {
// ... do stuff
if (i == end-1 (the one-but-last element)) {
... do other stuff
}
increment i
}
Entonces hago la pregunta: ¿usted escribir esto?
i = begin
mid = (end - begin)/2 // (the middle element)
while (i != end) {
// ... do stuff
if (i > mid) {
... do other stuff
}
increment i
}
En mi opinión, esto es mejor que la intención de escribir un bucle: se recorre porque hay algo común a ser hecho para cada uno de los elementos. Usando esta construcción, para algunos de los elementos haces algo diferente. Por lo tanto, llego a la conclusión, es necesario un bucle separado para aquellos elementos:
i = begin
mid = (end - begin)/2 //(the middle element)
while (i != mid) {
// ... do stuff
increment i
}
while (i != end) {
// ... do stuff
// ... do other stuff
increment i
}
Ahora, incluso vi un question el SO sobre la forma de escribir el -clause if
de una manera agradable ... y me dieron triste: algo no está aquí mismo
¿Estoy equivocado? Si es así, ¿qué hay de bueno en abarrotar el cuerpo del lazo con casos especiales, de los que eres consciente por adelantado, en el momento de la codificación?
Todo esto es muy bueno. Puedo mejorar mi estilo de trabajo personal con. Thx –
"se repite porque hay algo común que hacer para cada uno de los elementos". Depende de cuán general es ese "algo". Puede ser común que todos los elementos sean autos. Algunos son azules, otros son rojos. Si es azul, elija el color azul, si es rojo, luego elija el rojo para pintar. Entonces, en cierto punto, las decisiones en bucles pueden tener sentido, aunque. Pero en algún punto, será obvio que debes dividir el ciclo. –
@peter_the_oak: Estoy de acuerdo en que toma decisiones basadas en los valores que encuentra en el ciclo, pero no en el índice. – xtofl