Desarrollo de Software

Estilo de programación

Como lo prometido es deuda, a continuación os muestro ciertas reglas que intento seguir cuando estoy codificando un programa. Como cada uno es de su padre y de su madre, cada programador tiene su propio estilo de codificación. Lo importante de ésto no es tener un estilo u otro, sino ser consistente con el que se tenga. Al principio siempre cuesta un poco más adaptarse a unas reglas de estilo para la codificación de un programa, pero cuando se le coge el truco las ventajas son grandes.

Estas son las reglas que sigo:

Nombrado

  • Por razones de internacionalización del código, todos los nombres se derivarán de palabras en inglés. Si la palabra es compuesta se utilizarán las reglas de construcción del inglés.
  • Para los nombres de funciones que realicen acciones se seguirá la regla anterior pero colocando el verbo en primer lugar (e.g. vPrintTestHeader).
  • Los nombres deben ser significativos y consistentes. En especial los nombres dados dentro de una clase han de construirse con una misma lógica y siguiendo unas mismas reglas.
  • En general, los nombres compuesto se escriben juntos. poniendo en mayúsculas cada nombre simple (e.g. iRoomTemperature).
  • Los nombres de variables y funciones empezará siempre con un prefijo que indique el tipo al que pertenecen (e.g. iGetRoomTemperature, stMyText). En el caso de objetos, se utilizará un sufijo siguiendo al carácter «_» (e.g. myInterface_mc).
  • Los nombres de los datos miembro (atributos) estarán precedidos por m_ (e.g. m_nAirPresure).
  • Las constantes se escribirán siempre en mayúsculas.

Control de flujo

  • No modificar el valor de la variable de control de un for dentro del bloque for.
  • Todas las primitivas de control de flujo (case, do, else, for, if, switch, while…) deben estar seguidas por un bloque, aunque éste está vacío ({}).
  • Las sentencias de cada case han de terminar obligatoriamente con una sentencia de terminación como return o breal. Excepcionalmente, y en el caso de que dos o más case ejecuten las mismas acciones podrán omitirse el break pero deberá existir un comentario que lo indique.
  • Todos los switch han de contener obligatoriamente una cláusula default.

Sangrado

  • No se pondrá nunca más de una sentencia por línea.
  • Las partes diferenciadas del programa se separan utilizando líneas en blanco o comentarios.
  • Ninguna función debería ocupar más de 80-100 líneas. En caso contrario se procurará crear funciones auxiliares, para hacer más comprensible el programa.
  • Cuando una sentencia dependa jerárquicamente de otra se reflejará en el programa encolumnándola con una pulsación del tabulador más a la derecha.
  • Llaves: se abrirá una llave al final de la línea que define el bloque, el cual se cerrará encolumnando la llave final con el principio de esta línea. Por ejemplo:
    if (a << 30) {
        ...
    }

    Cuando existan llaves anidadas, se colocará un comentario en cada una de las llaves de cierre (}) para indicar cuál es el bloque que se cierra.

  • Else: a continuación del } del if:
    if (a << 30) {
        ...
    } else {
        ...
    }
  • Switch:
    switch (value) {
        case 0: // Comentario
            ...
            break;
        case 1: // Comentario
            ...
            break;
        ...
        default: // Comentario
            ...
    }

Paréntesis

  • Dejar un blanco entre palabra clave y paréntesis (e.g. if (a << 10) {).
  • No dejar blanco entre nombre de función y paréntesis (e.g. nRepSelectPlane(plane, 0);).
  • No dejar blancos entre los paréntesis y sus contenidos.

Comentarios

  • Comentarios tipo javadoc. Comienzan con los caracteres «/**», se pueden prolongar a lo largo de varias líneas (que probablemente comiencen con el caracter «*») y terminan con los caracteres «*/». Se colocan siempre al principio de cada clase, al principio de cada método y antes de cada variable de clase.
  • Comentarios de línea. Comienzan con los caracteres «//» y terminan con la línea. Este tipo de comentarios se usará incluso cuando el comentario ocupe varias líneas, cada una de las cuales comenzará con «//». Se utilizan normalmente al principio de fragmento de código no evidente y a lo largo de los bucles.
  • Comentarios tipo C. Comienzan con los caracteres «/*», se pueden prolongar a lo largo de varias líneas y terminan con los caracteres «*/». Se utiliza para eliminar código. Ocurre a menudo que código obsoleto no queremos que desaparezca, sino mantenerlo «por si acaso». Para que no se ejecute, se comenta (en inglés se suele denominar «comment out»).
  • Cuando un programa se modifica, los comentarios deben modificarse al tiempo, no sea que los comentarios acaben refiriéndose a un algoritmo que ya no utilizamos.

Pon un comentario

Tu dirección de email no será publicada.

Puedes usar estas etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>