A class named OrderFactory whose only method mapped one flat structure onto another flat structure with different field names.
// what it was called
final class OrderFactory
{
public function create(CreateOrderRequest $r): OrderData { /* ... */ }
}
// what it is
final class OrderRequestMapper
{
public function toOrderData(CreateOrderRequest $r): OrderData { /* ... */ }
}
The name mattered more than it should have: three people had looked for the place orders are created and found this, which constructs nothing. A factory produces a domain object and enforces its invariants; a mapper moves fields between shapes and enforces nothing. Naming the mapper as a mapper made the absence of an actual factory visible, and the invariants turned out to be spread across two controllers.