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.isActiveComentarios 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