12

Repeated Switches


Symptom

The same switch (or if/else chain) over a type code appears in multiple places — adding a new case means hunting them all down.

Goal

Each case is a class implementing a shared interface; dispatch happens once via a virtual call.

Smellier version
switch (event.kind) {
  case 'click': return onClick(event);
  case 'key':   return onKey(event);
  case 'drag':  return onDrag(event);
}
Fresher version
event.handle(); // ClickEvent, KeyEvent, DragEvent each implement handle()
Savings

Adding a new case is one new class; the compiler and tests tell you what's missing.

Note

Dispatch logic is duplicated across the codebase; new cases are easy to miss; the type-code couple amplifies.