Prácticamente todos los textos sobre la calidad del código que he leído están de acuerdo en que el código comentado es algo malo. El ejemplo habitual es que alguien cambió una línea de código y dejó la línea anterior como un comentario, aparentemente para confundir a las personas que leen el código más adelante. Por supuesto, eso es algo malo.
Pero a menudo me encuentro dejando un código comentado en otra situación: escribo una geometría computacional o un algoritmo de procesamiento de imágenes. Para entender este tipo de código y encontrar posibles errores en él, a menudo es muy útil mostrar resultados intermedios (por ejemplo, dibujar un conjunto de puntos en la pantalla o guardar un archivo de mapa de bits). Mirar estos valores en el depurador generalmente significa mirar una pared de números (coordenadas, valores de píxeles en bruto). No muy útil. Escribir un visualizador de depurador cada vez sería excesivo. No quiero dejar el código de visualización en el producto final (daña el rendimiento y generalmente confunde al usuario final), pero tampoco quiero perderlo. En C ++, puedo usar #ifdef
para compilar condicionalmente ese código, pero no veo mucha diferencia entre esto:
/* // Debug Visualization: draw set of found interest points
for (int i=0; i<count; i++)
DrawBox(pts[i].X, pts[i].Y, 5,5);
*/
y esto:
#ifdef DEBUG_VISUALIZATION_DRAW_INTEREST_POINTS
for (int i=0; i<count; i++)
DrawBox(pts[i].X, pts[i].Y, 5,5);
#endif
Así que, la mayoría de las veces, simplemente dejo el código de visualización con un comentario que dice lo que se está visualizando. Cuando leí el código un año más tarde, por lo general me alegra poder simplemente descomprimir el código de visualización y, literalmente, "ver qué está pasando".
¿Debo sentirme mal por eso? ¿Por qué? ¿Hay una solución superior?
Actualización : S. Lott pregunta en un comentario
¿Está de alguna manera "generalizando" todo el código comentado para incluir la depuración, así como el código obsoleto y sin sentido? ¿Por qué estás haciendo esa conclusión demasiado generalizada?
Recientemente leí el código limpio de Robert Martins, que dice:
Pocas prácticas son tan odiosas como el código de comentarios. ¡No hagas esto !.
He revisado el párrafo en el libro nuevamente (p. 68), no hay ninguna calificación, no se hace distinción entre diferentes razones para comentar el código. Así que me pregunté si esta regla está sobre generalizando (o si entendí mal el libro) o si lo que hago es una mala práctica, por alguna razón no lo sabía.