Muchas veces se habla sobre cómo deberían hacerse las cosas, pero a veces no se muestran los contraejemplos. A raíz de una conversación en la lista de correo se me ha ocurrido que podría ser útil tener una lista de ejemplos de malas prácticas de programación, cosas a evitar, desde fallos de novato hasta cosas más complejas.
Empezaré con un par de ejemplos sencillos que me vienen a la cabeza, ejemplos reales que he visto, y espero que os animéis y publiquéis los que recordéis. Aquí los que más aportarán serán los profesores, que corrigen nuestras prácticas y seguro que más de una vez se llevan las manos a la cabeza (ahora los modernos lo llaman facepalm):
Condición múltiple
Este contraejemplo apareció en una práctica sobre un juego de ajedrez. Se trataba de comprobar las coordenadas de la pieza:
if(row==1||row==2||row==3||row==4||row==5||row==6||row==7||row==8){if(col=='A'||col=='B'||col=='C'||col=='D'||col=='E'||col=='F'||col=='G'||col=='H'){// coordenadas correctas, hacer cosas}else{// columna incorrecta}}else{// fila incorrecta}
Una solución mejor habría sido algo como:
if(row<1||row>8||col<'A'||col>'H'){thrownewInvalidCoordException(row,col);}// todo correcto, hacer cosas}
Condición inversa
En la misma práctica también encontré esto:
if(condición){}else{// hacer cosas}
No recuerdo exactamente cuál era la condición, pero la idea era esa. Obviamente, hubo que sustituirlo por: