Curso de CEl Rincón del C - www.elrincondelc.com

Las buenas costumbres

[Anterior] [Siguiente] [Contenido]

En esta sección voy a tratar de dar unas indicaciones de cual es la forma más correcta de programar. Qué aspecto dar al código fuente para que sea más legible y elegante, cómo distribuir el código fuente en distintos ficheros...

Aspecto del código

Observa el siguiente código:

#include <stdio.h>
int main(void){ char cadena[20]; printf("Introduce una cadena:"
);fflush(stdout);
gets(cadena);printf("has escrito: %s",cadena);return 0;}

Ahora compáralo con este otro:

#include <stdio.h>

int main(void)
     {
     char cadena[20];
     printf( "Introduce una cadena:" );
     fflush(stdout);
     gets(cadena);
     printf("has escrito: %s",cadena);
     return 0;
     }

Creo que está claro cual es más conveniente. Si tienes que entregar una práctica de clase bien hecha recomendamos la segunda forma. Pero si tu código fuente es una chapuza y no sabes bien lo que estás haciendo recomendamos la primera (es una pesadilla intentar corregir un programa así). Por supuesto no me hago responsable de la posible mala leche del profesor.

Desde luego no es la única forma ni la más correcta, es simplemente mi estilo. Cada uno tiene su estilo personal, aunque conviene que tampoco sea 'muy personal' si es para compartirlo. Otra forma muy habitual es poner '{' justo después de la función:

#include <stdio.h>

int main(void) {
     char cadena[20];
     printf( "Introduce una cadena:" );
     fflush(stdout);
     gets(cadena);
     printf("has escrito: %s",cadena);
     return 0;
     }

[Arriba]

Los Comentarios

El código fuente debe estar bien documentado, de tal forma que si se lo pasamos a otra persona pueda entenderlo sin grandes dificultades. Quizá pienses: "mi código es mío y nunca se lo voy a dejar a nadie, así que para que voy a comentarlo". Parece lógico, pero imagina que lo abandonas y en el futuro quieres retocar el programa. Es muy probable que olvides por qué hiciste tal o cual cosa, (pasa muy a menudo, lo digo por experiencia) y tienes que pasarte un montón de tiempo descifrando algo que en su día entendiste perfectamente.

Aquí tienes un ejemplo de un programa mal comentado:

#include <stdio.h>

int main(void)  /* declaro la función main */
     {  /* Abro llaves */
     char cadena[20];   /* declaro una variable llamada cadena */
     printf( "Introduce una cadena:" );  /* Imprimo el mensaje 'Introduce una cadena */
     fflush(stdout);  /* vacío el buffer de salida */
     gets(cadena);   /* pregunto por el valor de cadena */
     printf("has escrito: %s",cadena);   /* muestro el valor que han introducido */
     return 0;  /* hago que el programa devuelva el valor 0;
     }  /* cierro llaves */

Estos comentarios están bien si el código forma parte de algún curso, pero no de un programa serio. Todo el mundo (que lleva un tiempo programando en C) sabe que con 'int main (void)' se declara una función y que con 'char cadena[20]' se declara una variable.

Los comentarios deben decirnos qué es lo que hace el programa, para qué sirven las variables y explicar las partes críticas o confusas del programas. Algo mas correcto sería:

/* Programa ejemplo creado para el Curso de C para Principiantes */

#include <stdio.h>

int main(void)
     {
     char cadena[20];  /* En la variable cadena se almacenará el valor a introducir */
     printf( "Introduce una cadena:" );
     fflush(stdout);
     gets(cadena);
     printf("has escrito: %s",cadena);
     return 0;
     }

Este programa es tan sencillo que no tiene puntos oscuros para comentar.

Es importante indicar para qué se van a usar las variables. Cuando tengamos muchas y pase el tiempo es difícil descifrar para que era cada una.

[Arriba]

Los nombres de las variables

Cuando hacemos un programa con prisas o por no pensar mucho damos a las variables cualquier nombre. Supongamos un programa como éste

     int i, j, k;
     char a, b, c;
     double x1, x2, x3, x4;
     char an1, ab, ac, ad, ae;
     /* ... muchas más variables */

Cómo podemos acordarnos al de un tiempo de qué era cada variable. Por eso es conveniente que aparte de indicar para qué sirve cada variable les demos nombres descriptivos:

     int num_enemigos;    /* Número de enemigos en escanario */
     int personaje_x, personaje_y;   /* Coordenadas del personaje */
     char balas;  /* Balas en cartuchera */
     char vida;   /* Vida restante */
     char arma;  /*modelo del arma */
     /* ... etc */

[Arriba]

[Anterior] [Siguiente] [Contenido]

© Gorka Urrutia

www.elrincondelc.com