Skip to main content

Inicia sesión en CleanKata

Sigue tu progreso, gana XP y desbloquea todas las lecciones.

Al iniciar sesión aceptas nuestros Términos de uso y Política de privacidad.

Código Limpio50 XP5 min

El Mal Necesario de los Comentarios

El código es la única fuente de verdad — los comentarios mienten a medida que el código evoluciona.

El Fracaso de la Expresión

Un comentario es una disculpa. Cada vez que escribes uno para explicar código confuso, has fallado en escribir código claro. Los comentarios no se compilan — se pudren. El código cambia, el comentario no, y ahora es una mentira. El objetivo: expresar la intención con nombres y estructura, no con prosa.

Comentario compensa un mal nombre

int d; // elapsed time in days

El nombre revela la intención

int elapsedDays;
// ✗ Bad
function check(u):
    // if admin and active
    if u.r == "a" and u.s == 1:
        return true
    return false

// ✓ Good — no comment needed
function canAccessAdminPanel(user):
    return user.role == "admin" and user.isActive

Comentarios de Calidad

Algunos comentarios se ganan su lugar. Avisos legales (copyright). Explicaciones de intención — el por qué de una decisión, no el qué hace el código. Advertencias de consecuencias ("No eliminar — esto es un parche para un bug conocido de la JVM"). Aclaración de regex o algoritmos complejos que no pueden simplificarse más.

// ✓ Legal — required by org policy
// Copyright (c) 2024 CleanKata Inc. MIT License.

// ✓ Intent — explains *why*, not *what*
// Using bubble sort intentionally — the data is almost always sorted
// and nearly sorted arrays run in O(n). Benchmarks in /docs/sort-perf.md
function sortReadings(readings):
    bubbleSort(readings)

// ✓ Warning
// Don't call this more than once per request.
// The payment provider charges per token generation.
function generatePaymentToken(orderId):
    ...

El Catálogo del Ruido

Los comentarios redundantes repiten lo que el código ya dice. Los Javadoc obligatorios en getters triviales son ruido: /** Retorna el nombre. */ getName() no aporta nada nuevo. El código comentado es lo peor: implica que algo es importante, pero nadie sabe si es seguro eliminarlo. Elimina el código muerto — git history lo recuerda.

Comentarios de ruido

// Increment counter
counter = counter + 1

function getName():
    // Returns the name.
    return name

// old_total = cart.items * price
// if discount: old_total *= 0.9
total = cart.calculateTotal()

Elimínalo — git lo recuerda

counter = counter + 1

function getName():
    return name

total = cart.calculateTotal()

Desafío de Código

Reemplaza Comentarios con Código — cada comentario en esta función es una señal de alerta.

💡Conclusión clave

El mejor comentario es un buen nombre. El segundo mejor es ningún comentario. Escribe código que se documente solo.

🔧 Algunos ejercicios pueden tener errores. Si algo parece incorrecto, usa el botón Feedback (abajo a la derecha) para reportarlo — nos ayuda a corregirlo rápido.

Pista: Toma el primer comentario y pregunta: ¿por qué existe? Si explica *qué* hace el código, renombra la variable o función. Si explica *por qué se ejecuta un bloque*, extrae ese bloque en una función con nombre.

✗ Tu versión