55

Inline Class


Goal

A class with too few responsibilities to deserve its own file folds into a class it collaborates with most.

Before the refactoring
class TrackingInformation {
  shippingCompany;
  trackingNumber;
  display() { return `${this.shippingCompany}: ${this.trackingNumber}`; }
}
class Shipment { tracking; }
After the refactoring
class Shipment {
  shippingCompany;
  trackingNumber;
  display() { return `${this.shippingCompany}: ${this.trackingNumber}`; }
}
Savings

Fewer files, fewer constructors, shorter call paths; the absorbing class's coherence improves when it gains the methods it was already orchestrating.

Note

If the absorbing class was already large, inlining piles more onto it — fold in only when the absorber stays under its complexity budget afterward.