Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Regla 0x0201h: Escribí comentarios que expliquen el 'porqué', no el 'qué'

Comentarios, documentacion y organizacion de archivos (0x02XX)

Universidad Nacional de Río Negro

0x0201h: Escribí comentarios que expliquen el ‘porqué’, no el ‘qué’

Enunciado normativo

DEBE usarse el comentario para registrar la intención, la decisión de diseño o la razón de una construcción no evidente. NO DEBE comentarse lo que el código ya expresa con claridad.

El comentario agrega información que el código no puede contener por sí solo.

¿Por qué existe esta regla?

El problema

El código dice qué hace; el comentario debe decir por qué lo hace así. Un comentario que repite la sentencia (i++ // incrementa i) no aporta nada y, peor, envejece mal: cuando el código cambia, el comentario queda mintiendo. En cambio, explicar por qué se eligió un bucle inverso o por qué un valor especial es correcto sobrevive a la refactorización.

La regla es una cuestión de señal y ruido: cada comentario redundante compite por la atención del lector y le enseña a saltearlos, incluidos los útiles.

Consecuencias de violarla

Tipo de consecuenciaEfecto concreto
CompilaciónNinguna: los comentarios se descartan en la fase de traducción (§6.4.9).
MantenibilidadLos comentarios desactualizados mienten y desorientan.
LegibilidadEl ruido esconde los comentarios que sí importan.
RevisiónEl corrector gasta tiempo leyendo paráfrasis sin valor.
DocumentaciónLa intención real del algoritmo se pierde.

Fundamento en el estándar y en la cátedra

El estándar define las dos formas de comentario (§6.4.9) y no impone su contenido. La cátedra adopta el criterio de intención antes que mecánica, complementario de 0x0203h: Prescindí de comentarios obvios, redundantes o vacíos (que prohíbe los comentarios obvios o vacíos) y de 0x2003h: Todas las funciones deben incluir documentación completa y estructurada (que exige documentación estructurada en funciones).

Alcance y excepciones

Aplica a comentarios de línea y de bloque dentro del código. Los bloques de documentación de función siguen la plantilla de 0x2003h: Todas las funciones deben incluir documentación completa y estructurada. Las cabeceras de archivo con autoría y propósito no se consideran redundantes.

Ejemplos exhaustivos

❌ Contraejemplo 1 — Comentario que parafrasea

// Incrementa i en 1
i++;

Por qué falla: el lector ya sabe leer i++; el comentario no agrega información y ocupará una línea que quedará desactualizada si cambia el incremento.

❌ Contraejemplo 2 — Comentario de lo evidente

// Variable para guardar el promedio
double promedio = 0.0;

Por qué falla: describe el nombre, no una decisión; no explica por qué se inicializa en cero ni por qué es double.

✅ Ejemplo conforme 1 — Explicar la decisión

// Recorremos del final al principio porque el último byte
// define la paridad del paquete.
for (size_t i = longitud; i-- > 0; )
{
    verificar_byte(datos[i]);
}

Justificación: el comentario registra por qué el orden importa, algo que la sentencia por sí sola no revela.

✅ Ejemplo conforme 2 — Explicar un valor no obvio

// El compilador alinea structs a 8 bytes; el relleno explícito
// mantiene el mismo layout entre arquitecturas.
struct registro_t
{
    uint32_t id;
    uint32_t relleno;
    uint64_t marca;
};

Justificación: documenta una decisión de portabilidad que de otro modo parecería un campo inútil.

⚠️ Casos límite

Cómo detectarla

HerramientaComandoSeñal
Revisión manualComentario que usa verbos del código (incrementa, asigna).
gaffgaff check archivo.cRegla 0x0201h: comentario sin valor explicativo.
grep`grep -nE '//.*(incrementaasigna

Checklist de autocontrol

Reglas relacionadas