domingo, 1 de junio de 2014

Consejos para generar código C/C++ de calidad

Navegando por los archivos de mi portátil, hoy encontré un post para desarrolladores de C/C++ que escribí allá por 2004. El post comenzaba de esta manera...

Con los años irás aprendiendo que ser un buen desarrollador de software del lenguaje C/C++ no es solo aprender el lenguaje de programación y escribir lineas de código que compilen y hagan alguna tarea predefinida. Aprender a escribir código compilable es solo el comienzo del camino.


El código fuente de una aplicación debe escribirse siguiendo unos principios de ingeniería que generalmente se aprenden durante la época de estudiante en la Universidad y se asimilan con los años de experiencia. Un código fuente bien escrito es una auténtica obra de ingeniería.

Pero algunos desarrolladores (inexpertos o , incompetentes, da lo mismo), nunca aprenderán a usar los principios básicos de ingeniería, convirtiendo sus códigos fuentes en "obras de arte" caóticas, chapuceras y desordenadas, que solo ellos entienden (y algunos que, sin tener mucha idea, admiran).

Quizás su código funcione, y haga lo esperado. Pero nos olvidamos que su código fuente deberá ser mantenido, probablemente por nuevos desarrolladores que no lo han implementado, y no entienden esa "obra de arte" realizada por sus caóticos predecesores. Pobrecitos desarrolladores, los que vengan por detrás...

De la experiencia adquirida con los años, quiero compartir con vosotros una lista de consejos prácticos que seguro os serán de utilidad para mejorar la calidad de vuestros desarrollos, y facilitarán la vida a los pobrecitos desarrolladores que algún día tendrán que mantener vuestro código. Aunque solo sea por ellos, hagamos bien las cosas...
 
Consejos como analista
  • Exige que tu entrada como analista sea una especificación formal de los requisitos funcionales del sistema.
  • Cualquier diseño es mejor que ninguno.
  • Diferencia con claridad el interfaz publico del interfaz privado
  • Mantén tus clases/módulos desacoplados y usa interfaces públicos bien definidos para comunicarlos.
  • Un buen diseño permite entender la solución propuesta mirando unicamente ficheros de cabecera .h
  • Cuando necesites abrir los ficheros fuentes (.c o .cpp) para entender la solución propuesta, rediseña.
  • La información solo es útil cuando esta bien ordenada.
Consejos como desarrollador
  • Tus principales herramientas como desarrollador son dos: papel y lápiz.
  • El teclado es el medio para codificar tus ideas sobre papel en el código fuente de tu aplicación.
  • Documenta los prototipos de tus funciones en el fichero de cabeceras .h
  • Haz pruebas unitarias de todas tus clases/módulos y mantenlas siempre actualizadas.
  • Haz tu propia guía de estilo y acostúmbrate a usarla.
  • Lee código de otros desarrolladores mejores que tu y actualiza tu guía de estilo con lo que aprendas.
  • Usa alguna herramienta de control de versiones como Subversion o Git.
  • Refactoriza tu código con frecuencia.
  • La mejor solución es siempre la mas sencilla, pero no por ello la mas fácil de encontrar.
  • Los buenos programadores encuentran siempre la mejor solución (lo difícil es hacerlo fácil).
  • Los malos programadores hacen justo lo contrario (lo fácil lo hacen complicado).
... Han pasado 10 años desde que escribí este post.

Tras leerlo, lo primero que me vino a la cabeza es que los años pasan muy rápido (tenía 27 cuando lo escribí, y voy camino de los 38). Lo siguiente que pensé es que sigo pensando exactamente lo mismo que hace 10 años. ¿Desarrolladores que generen código de calidad? Contados con los dedos de una mano.


2 comentarios:

Pedro Castro dijo...

Excelente post gracias por compartir su experiencia. Solo una pregunta ¿existe o conoce alguna guía estándar o que predomine en los desarrolladores que usan c++?

aicastell dijo...

En primer lugar agradecerte que hayas leído el articulo, y me alegro de saber que te ha gustado. En realidad cada desarrollador suele ir haciendo y perfeccionando su guía de estilo a lo largo de los años. Aunque no lo sigo al pie de la letra, hace algún tiempo leí un libro llamado "Clean Code. A handbook of Agile Software Craftsmanship", que esta bastante bien y del que adopté algunas cosas. Yo desde luego tengo mi propia guía de estilo, algún día me animaré a escribir un post en el blog sobre ello. Gracias por tu comentario y hasta pronto!

Visitas:

Seguidores