( persicsb | 2016. 08. 10., sze – 10:26 )

"if (INTEGER.equals(typeValue)) {
// do something
} else if (STRING.equals(typeValue)) {
// do something else
}"

Ilyeneknek pontosan egy helyen szabad előfordulnia a kódbázisban. Abban a factoryben, ami a StringBasedImplementationt és az IntegerBasedImplementationt példányosítja.
Aztán a többi helyen már nincs if(type == ez) else if(type = az).
Pont azért van típusrendszerünk, hogy ne kelljen ilyeneket többször leírni a kódban, hanem az egyes típusimplementációkra delegálni a feladatot. És így persze több típussal kiegészíteni a kódot is csak annyiból áll, hogy a factoryt bővíted.

Ha több helyen is van if (KONSTANS == type) típusú kód, az egy nagyon rossz code smell. Nem véletlenül van (haha, mily csodás név) típusrendszere az OOP nyelveknek.