Inline Variable

Removes smells
Symptom

A local variable that's just a rename of its right-hand side — `const basePrice = order.basePrice;` — adding no domain meaning the original expression didn't already carry. The reader pays for a binding that returns no information, and small scopes accumulate redundant names that crowd out the meaningful variables.

Goal

Single-use variables that just rename their right-hand side disappear; the expression speaks for itself. The reader's per read drops by the name-lookup hop the binding required, and of the scope rises as redundant names give way to the expressions they merely renamed.

Before the refactoring

const basePrice = order.basePrice;
return basePrice > 1000;

After the refactoring

return order.basePrice > 1000;
Example source: Illustrative example written for this site; the refactoring itself is catalogued in Martin Fowler's Refactoring (Addison-Wesley, 2018), see the chapter on A First Set of Refactorings.
Pressure

Readers track an extra name for nothing; small scopes accumulate redundant references; the variable's existence implies meaning it doesn't have. The team's on edits touching the binding rises by one declaration to verify on every change, and reviewers grant the binding presumed meaning that isn't there.

Tradeoff

Inlining a name that did carry domain meaning costs readability — only inline when the expression is already self-explanatory. The team's can rise rather than drop if inlining strips a name that was load-bearing across multiple reads, because the original named concept now lives nowhere in the scope.

Relief

Less local clutter, fewer redundant names, smaller scopes to track. The team's drops because adding a new use of the expression doesn't require updating a binding's name, and reviewers focus on the meaning at the use site rather than reconciling the binding's name with the expression it merely renamed.

Trap

Inlining a variable whose name did carry domain meaning — collapsing `const annualRate = 0.05` to bare `0.05` strips the named constant the reader needed. The of decoding what `0.05` means at every use site rises, and the cure adds by stripping the named domain concept the binding was holding.