26 noviembre 2005

Las buenas prácticas de programación

Todos sabemos que está prohibido hacer variables globales, que no se pueden poner atributos publicos, no se debe usar goto, etc, etc.

¿Por qué es un pecado?

Todas las buenas prácticas están pensadas para evitar problemas después, no para evitarlos ahora. Me explico. Si yo quiero hacer un programa rápido, lo más rápido posible y no pienso tocar ese código nunca más, ni pretendo reaprovecharlo, ni nadie tiene que mantenerlo ni añadirle mejoras, las buenas prácticas de programación no sólo no sirven para nada, sino que además son un estorbo que me harán programar más despacio. En ese caso sí se pueden usar goto, atributos públicos, no comentar código, etc, etc.

Sin embargo, esto no es lo habitual. Un programa, sobre todo si es para el trabajo, siempre corre prisa, pero siempre hay que introducir luego mejoras, nunca funciona a la primera y siempre hay que depurarlo. Siempre nos sale otro programa después que se parece al primero y hace que intentemos reaprovechar el primero. Y aunque no pensemos usar el programa nunca más, nunca podemos estar seguros de ello.

Por ello
  • Comentar el código es totalmente inútil si nunca nadie va a mirar ese código. Es casi obligatorio si tenemos que mirarlo dentro de unos meses o tiene que mirarlo otra persona que quiere reaprovecharlo, corregirle fallos a añadirle funcionalidades.
  • Las variables globales impiden reaprovechar el código. No podremos llevarnos un trozo de código sin esa variable global y quizás sin el resto de código que modifica esa variable. Tampoco sabremos en el efecto en el resto del código si aquí hacemos alguna moficiación que modifique el valor de la variable global. Buscar por todo el código dónde se usa la variable global puede ser un infierno, sobre todo si la variable global se llama "a".
  • Los atributos públicos son parecidos a las variable globales. No sabemos que efectos puede tener en el resto del código el cambio de esa variable.
  • Los goto sí que hacen impredecibles los cambios en el código. Nunca sabemos quién puede venir al trozo de código que estamos modificando ni desde dónde. Si hacemos funciones y llamamos a las funciones, podemos modificar el código dentro de la función siempre que aceptemos los mismos parámetros y devolvamos lo mismo.
y así hasta el infinito.

No hay comentarios: