Az objektumorientált számítógép-programozásban a komplex switch utasítások antimintának, azon belül kódszagnak számítanak, amikor polimorfizmus helyett használják. Ekkor lekérdezik az objektum típusát, és annak megfelelően bánnak vele. Nem kell, hogy switch utasítás legyen; lehet megfogalmazva case-zel, vagy hosszú, soktagú elágazású if utasításként is. Gyakran több különböző helyen is megtalálható a programban. A probléma az, hogy valahányszor hozzáadunk egy újabb típust, meg kell nézni az összes ilyet, hogy melyik ágba való, vagy pedig mehet-e egy külön ágba.
Megelőzésként javallott az az ökölszabály, hogy valahányszor egy elágazást írunk, vagy case vagy switch utasításon gondolkodunk, jusson eszünkbe a polimorfizmus.
A kódszag kezelésére az egyes elágazásokban levő kódot emeljük ki külön metódusokba, majd azokat egységesítsük (név, paraméterezés ugyanaz legyen), és vigyük át a megfelelő osztályokba. Használhatunk gyermek osztályokat, stratégiát vagy állapotot, mikor melyik a megfelelő. Áttekintve és rendezve a hierarchiát, végül is meghívhatjuk az új, egységesített metódust a switch utasítás helyett.
A switch utasítások meghagyhatók alacsony szinten, vagy gyártó mintákban (gyártó metódus, gyár, absztrakt gyártó). Meghagyhatók az egyszerű utasításokat végrehajtó switch szerkezetek is.
Forrás Refractoring Guru
Kategória:Programozási antiminták