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 versionevent.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.