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