Symptom

Comments explaining what the next block of code does, what a function returns, or how a parameter is meant to be used.

Goal

Names of functions, variables, and types tell the reader what the comment was trying to say. Comments survive only when WHY is non-obvious.

Smellier version

// charge the customer's stored payment method, including tax
charge(c, t * 1.1);

Fresher version

chargeWithTax(customer, total);
Example source: Illustrative example written for this site, not a quotation from any source.
Pressure

The code didn't reveal its intent — the comment is patching an unnamed function or unclear variable; comment and code drift over time.

Tradeoff

Renaming to express what a comment said increases churn across consumers and history; some legitimate comments (non-obvious WHY, hidden invariants, workaround references) are harder to convey through names alone.

Relief

No more stale comments; readers trust names; reading the code is the path to the answer.

Trap

Deleting every comment as part of a cleanup pass — including ones that document hidden constraints, historical context, or invariants that names genuinely can't express.