Symptom

Names that don't disambiguate scope or domain force the agent to read more code into the just to know what a variable holds before each . Each ambiguous identifier triggers an extra read; chained edits across a file with ambiguous naming compound this cost without proportional information gain.

Goal

Identifiers carry enough information that the agent can reason about each symbol without paying to recover meaning from surrounding context. One token of name resolves the question 'what does this hold?' for the agent; reasoning passes proceed with the symbol's semantics already grounded, dropping per-edit .

Smellier version

function calc(d, t) {
return d * t;
}

Fresher version

function distance(speed, time) {
return speed * time;
}
Example source: Illustrative example written for this site; the smell itself is catalogued in Martin Fowler's Refactoring (Addison-Wesley, 2018), see the chapter on Bad Smells in Code.
Pressure

Every reasoning step re-derives meaning from surrounding code; chained edits compound the cost, and ship as plausible-looking misreads of what symbols stand for. Without disambiguating context, the agent generates code against a guessed meaning — and the guess matches whatever the embedding for that identifier favors in similar codebases.

Tradeoff

Renames invalidate cached associations — commit history, snippets, embedding indexes, and prior conversation context all carry the old name until they refresh. The agent reading any cached source against the renamed code pays : cached retrieval surfaces stale snippets, generated code references the old name, and downstream verification fails until every cache rolls forward.

Relief

Every later read resolves to one name; the of recovering meaning drops by the size of the context the agent previously had to load. Reasoning passes shrink because the disambiguating context now lives in the identifier itself; the agent generates code with the symbol's semantics already grounded in the name.

Trap

Renaming every variable whose current name another reviewer would also accept invalidates cached associations across RAG indexes, prior conversation context, and old-name references in code comments — without changing what the symbol stands for. The agent pays full cache-staleness cost across every retrieval surface; the cost-benefit ratio inverts when the old name was already clear enough.