¿Deberíamos seguir convenciones de codificación al programar?

A la hora de trabajar con un determinado lenguaje de programación o de maquetado, debemos respetar una serie de reglas sintácticas. Estas definen aspectos como el uso de signos de puntuación, las palabras reservadas, los operadores lógicos y la definición de variables, funciones, procedimientos, objetos y otras entidades. Pero estas reglas obligatorias admiten una gran variedad de estilos de escritura. Por ejemplo, algunos programadores pueden preferir declarar cada variable en una línea separada, mientras que otros eligen declarar todas en la misma línea. Si la sintaxis no dice nada al respecto, las dos opciones pueden ser igualmente válidas.

Las convenciones de codificación (coding conventions) son pautas que definen un estilo de programación y determinan el aspecto visual del código fuente. Por ejemplo, aportan normas relativas a los siguientes aspectos:

  • Cómo y cuándo usar comentarios.
  • Uso de tabulaciones o espacios para indentación.
  • Uso apropiado de espacios en blanco.
  • Cómo nombrar apropiadamente archivos, constantes, variables, funciones, clases, métodos y paquetes.
  • En qué orden declarar las variables.
  • Cuál debería ser el largo máximo de las líneas.

Si bien muchos se refieren a estas pautas como «estándares de codificación» (coding standards), elegimos no usar este término porque puede prestarse a confusión. En algunos casos, este término se usa para especificaciones de sintaxis oficiales (como los estándares del W3C), mientras que otros incluyen en esta definición cuestiones no vinculadas al aspecto visual del código, como la elección de un patrón de diseño (por ejemplo, el patrón Modelo-Vista-Controlador). También se habla de «estilos de codificación» (coding styles).

Existen muchas convenciones posibles para cada lenguaje. Podemos basarnos en un estilo ya desarrollado o bien diseñar uno propio para compartir con nuestro equipo de trabajo. Muchas empresas y desarrolladores importantes han publicado los suyos:

Para muchos, el uso de convenciones de codificación tiene las siguientes ventajas:

  • Código fuente más legible, portable, seguro, eficiente, robusto y cohesionado.
  • Mayor velocidad en el desarrollo, con reducción de horas hombre.
  • Mejor coordinación entre los equipos de trabajo. Se evitan discusiones innecesarias.
  • Hace que para un desarrollador resulte más fácil cambiar a otro proyecto o equipo.
  • Hace que para un desarrollador sea más fácil integrarse a un proyecto ya comenzado.
  • Menor cantidad de bugs.
  • Facilita los procesos de revisión de código y la creación de scripts para testing.
  • Es un factor que puede ayudarnos a obtener una certificación de calidad.

Sin embargo, muchos señalan algunos inconvenientes de este enfoque:

  • Para un desarrollador, abandonar su estilo habitual de codificación para aprender otro totalmente nuevo puede llevar tiempo y dilatar el proyecto.
  • La obligación de apegarse a ciertas normas puede restringir la creatividad del desarrollador.
  • Las convenciones de codificación pueden distraernos del objetivo más importante: construir, testear y publicar funcionalidad de manera adecuada.
  • Algunos miembros del equipo de trabajo pueden sentir que el líder del proyecto les impone estas convenciones porque no confía en sus habilidades de programación.

Incluso con sus potenciales desventajas, conocer las convenciones de codificación que se utilizan en equipos exitosos puede ser un buen punto de partida para construir software y sitios web de calidad.