Slide Statements

Removes smells
Compare
Symptom
Human

A function where related statements are scattered with interleaved unrelated work — assignments to logically-coupled variables separated by lines that don't share their concern.

Agent

A function whose related statements are interleaved with unrelated work; the agent reasoning about any sub-step must track state across non-adjacent lines.

Goal
Human

Related statements sit next to each other; the function reads as a sequence of cohesive sub-steps that are easy to extract.

Agent

Related statements sit next to each other; the agent reads the function as a sequence of cohesive blocks ready for extraction.

Before the refactoring

const basePrice = qty * itemPrice;
logPriceCalc(basePrice);
const tax = basePrice * 0.1;
logTaxCalc(tax);

After the refactoring

const basePrice = qty * itemPrice;
const tax = basePrice * 0.1;
logPriceCalc(basePrice);
logTaxCalc(tax);
Example source: Illustrative example written for this site, not a quotation from any source.
Pressure
Human

Reader must hold partial sub-step state in working memory across unrelated statements; the implicit grouping inside the function stays implicit and obstructs further refactoring.

Agent

The agent holds partial sub-step state across non-adjacent lines; reasoning about any single concern requires tracking the others through the interleave.

Tradeoff
Human

Reordering can change behavior if statements aren't actually independent — verify side effects and dependencies before sliding.

Agent

Sliding can silently change behavior if statements aren't truly independent (hidden side effects, timing dependencies, observer effects); the agent verifying the slide must confirm independence at every gap.

Relief
Human

Setup for Extract Function becomes trivial; the implicit grouping inside the function becomes explicit.

Agent

Statements that depend on one another sit next to each other; the agent reads each cluster as a unit without tracking state across non-adjacent lines to follow data flow.

Trap
Human

Reordering statements without verifying independence — sliding past a statement with hidden side effects (logging that observes state, time-sensitive read) silently changes behavior.

Agent

Aggressive sliding without verifying side-effect ordering — observer logs, time reads, async dispatch — silently changes behavior the agent's local tests may not catch.