TODO, FIXME, DEPRECATED... ¡Marca tu código!

Si programas con frecuencia y lees código de software libre, sabrás o te habrá llamado la atención el uso de ciertas etiquetas dentro de los comentarios del código que comienzan por TODO, o FIXME, o XXX… estas etiquetas se conocen con el nombre de codetags, ¿sabes para qué sirve cada una?

Algunos chicos de Python intentaron hace tiempo poner un poco de sentido y orden en el uso de estas etiquetas. Son etiquetas que están presentes en todos los lenguajes, en todos los códigos y en los comentarios. El PEP–0350 fue rechazado, pero su motivación y trabajo queda ahí.

Revisando los enlaces, la mayoría rotos, podemos encontrar el wiki de Ward Cunningham. Martin Pool introduce este concepto como Fixme Comment. Lo resume todo en el uso de tres palabras TODO, FIXME o XXX con igual significado: arregla esto o tarea pendiente.

¿Para qué usamos estas etiquetas?

Tienen su sentido tanto si usas metodologías ágiles como si no. Imagina que tienes la especificación de un código que tienes que hacer. Tienes el diseño ya pensado (o en UML) y tienes que ponerte a codificarlo. Llegado el momento de implementar una función o método que es bastante profundo (usa otros métodos y estos a otros que aún no están implementados) podemos hacer una implementación rápida de las funciones no implementadas agregado un retorno por defecto y el comentario TODO con el texto de qué debe de hacer esa función.

También se usan en caso de que implementando un código, nos damos cuenta de que no es todo lo eficiente que debería, pero no tenemos tiempo para dedicar a esa parte del código. En ese caso, podemos agregar un FIXME o TODO, depende si puede convertirse en problema o no.

En caso de que haya un caso (aunque remoto) en el que el código falla, pero no conseguimos encontrar exactamente el problema, o el problema es complejo de resolver, podemos indicarlo en la zona que creemos que se produce a través de FIXME.

Revisando nuestro código podemos refactorizar varias partes de nuestro código pero sin embargo, si el cambio es muy grande, dejamos envolturas (wrappers) que nos permiten no tener que cambiarlo todo, manteniendo una interfaz entre unas llamadas a funciones con sus parámetros de entrada y salida. Esto podemos marcarlo como DEPRECATED indicando que este uso concreto debe de modificarse en el futuro.

Trabajo en equipo

Una de las mayores potencias de esto es hacer marcas para los compañeros de trabajo. Incluso el analista podría abrir el código y realizar marcas a modo de las tareas a realizar, para facilitar el trabajo a los programadores. Aunque la faceta más importante considero que es el poder marcar qué partes de código habría que ir implementando con TODO para que otro pudiese ir haciendo partes del código e incluso con FIXME lo que no conseguimos resolver.

Conclusiones

No pretendo sentar las bases de lo que supone el uso de palabras clave en el código, porque al igual que el comité que rechazó la estandarización de las etiquetas de código, yo mismo considero que es algo que se debe de acordar entre los que forman el grupo de trabajo y se puede ampliar o cambiar el significado siempre que se quiera.

El uso facilita encontrar entre los ficheros de código lo pendiente para poder seguir trabajando. Una ayuda inestimable para no perder el foco y poder pasar de una tarea a la siguiente sin demora.