Acostumbrado a tener que lidear con códigos ajenos, he aprendido que invertir parte de mi tiempo en ordenar y estilizar al código suele ser una buena apuesta a largo plazo (especialmente cuando hay que entrar en contacto con un código que hace tiempo no tocas).

Un código prolijo, obviamente, es mucho más fácil de leer. Por tal motivo, al momento escribirlo, algunas de las recomendaciones útiles son:

  • Normalizar la declaración de variables locales y globales y constantes.
  • Normalizar la definición de funciones o métodos.
  • Comentar el código, pero solo lo necesario, no tiene sentido y dificulta la lectura si cada dos líneas de código hacemos un comentario.
  • Definir tabulaciones, los espacios y los saltos de línea. Indentar el código.

Cuando de indetar el código, podemos tener conflictos de gustos, pues son varios los estilos. Veamos algunos:

  • Estilo K&R:
    • Utilizado por Kernighan y Ritchie en su libro "El lenguaje de programación C"
    • Abre las llaves al finalizar una sentencia de control
    • En el caso de las funciones la llave es abierta en la línea siguiente.
    • El tamaño de las tabulaciones es de 4 espacios.

void main()
{
    while (1) {
        printf("Hello World!");
    }
}

  • Estilo BSD KNF (Kernel Normal Form):
    • La forma más difundida en código basado en Sistemas Operativos que heredan de BSD.
    • Estilo de código del Kernel de Linux (Linux kernel coding style)
    • Utiliza dos tabuladores (Hard tab y Soft tab) de 8 y 4 columnas respectivamente
    • El hard tab es utilizado para indentar bloques de código
    • El soft tab se utiliza para indetacion adicional en aquellos casos que una línea continue en varias líneas

static void
shrek(void *cx, char *obj, int arg,
    void *argv, void *rval)
{
        if (CheckProperty(cx, o, "data",
            CONTS_LIMIT,
            NULL, NULL, ) != 0) {
                fprintf(stderr,"Cannot check property\n");
                fflush(stderr);
        }
        free(data);

        return (NO_ERROR);
}

  • Estilo Allman
    • También conocido como "ANSI style"
    • Ubica las llaves en la siguiente línea a una sentencia de control
    • Las sentencias son indentadas al siguiente nivel de las llaves

//for (int i=0; i <x; i++)
//while (x == y)
if (x == y)
{
    something();
    somethingelse();
}

  • GNU style
    • Ubica las llaves en una línea para si mismo
    • Las llaves son indentadas con dos espacios y el código es indentado con dos espaciones más
    • Popularizado por Richard Stallman
    • El comando reformat del editor Emacs reformatea el código, por defecto, con este estilo (como no podía ser de otra manera)

while (x == y)
  {
    something ();
    somethingelse ();
  }
finalthing ();

Vía: Algoritmática