Replace Command with Function

Symptom

A command class whose execute() does the work in one shot with no sub-step decomposition; callers go through construct-then-call ceremony for what could be one function.

Goal

The command collapses to a plain function; the agent's call sites become direct invocations.

Before the refactoring

class ChargeCalculator {
constructor(c, o) { this.c = c; this.o = o; }
execute() { return this.c.base + this.o.tax; }
}
new ChargeCalculator(c, o).execute();

After the refactoring

function charge(c, o) { return c.base + o.tax; }
charge(c, o);
Example source: Illustrative example written for this site, not a quotation from any source.
Pressure

Every caller pays the construct-then-call hop; the agent reasoning about behavior loads a class to find a single function.

Tradeoff

If the command held genuinely useful intermediate state, collapsing regrows the temps it eliminated; the agent verifying the collapse must check whether any internal decomposition is load-bearing.

Relief

Fewer files; shorter call stacks; the agent's plan-and-execute loop touches the function directly without the construct-then-call hop.

Trap

Collapsing commands that genuinely decomposed into named sub-steps regrows the temps they eliminated and the function-with-many-locals smell returns.