Hace 12 años | Por dokkillo a cvmountain.com
Publicado hace 12 años por dokkillo a cvmountain.com

Como no escribir un loop de programación.

Comentarios

D

Esto me recuerda a un extraño bug que le sucedia a una pieza de código que habiamos heredado:

//types es un HashSet aunque al final quedó como EnumSet
for(int i = 0; i < types.size(); i++)else if(...)
}

El creador de éste método, parece que no recuerda que la condición del for se verífica cada vez que
se pasa por ésta por lo que el type.size() decrementa con el types.remove().

v

Típico del C, en el cual el bucle for es un simple while con otra sintaxis. Prefiero lenguajes, como basic u otrillo de por ahí, en que una vez fijado el límite para for, este es inalterable, aunque la variable de la que se obtuvo cambie.

for i = 1 to this.MyControl.TabPages.Count
this.MyControl.TabPages.Remove (0)
next

El bucle se ejecutará tantas veces como objetos había al inicio. En este ejemplo siempre se remueve el ítem inicial. Se nota también que el tener un índice es inútil, por lo que se puede hacer con DO:

Do While this.MyControl.TabPages.Count
this.MyControl.TabPages.Remove (0)
Loop

En C debió haber sido:

while (this.MyControl.TabPages.Count)
this.MyControl.TabPages.Remove (0);

El bucle FOR era una mala elección de todos modos.

v

Estoy pensando que el utilizar un arreglo de elementos de una clase tambien me resulta anti-natural... por lo que cometí un error ahí arriba... amm. Odio el C. Y el Basic.