Ilyen kódot általában nem kell írni, szerintem az alábbiak miatt:
- Egy kódban általában egy osztály vagy egyféle dolgot csinál (SRP), ekkor nincs szükség hosszú nevekre.
- Ha egy osztály neve hosszú, az azt jelenti, hogy nagyon sok konkrét dolgot csinál. Ami eleve nem jó dolog, de előfordul.
- Viszont a változó típusa az absztrakt interfész szokott lenni, pont azért, hogy betartsuk a separation of mechanism and policy elvet. Azaz nem írok olyat, hogy
ArrayList<Foo> foos = new ArrayList<Foo>();
- Ha ez az osztály egy függőség, akkor DI-vel injektáltatom a konstruktorban, nem pedig magam hozom létre. És amit injektálok, ott nem érdekel a konkrét típus, csak az interfész (policy).
- Ahol magam hozom létre, ott is kiajánlani a hívó felé interfészt ajánlok ki (policyt) és nem konkrét megvalósítást (mechanizmust), ezért sem kell kiírnom kétszer ezt.
- Az az eset, ahol ilyen konkrétumot kell mindenképpen leírni, azok a factory-k/DI providerek. Az meg a kódnak eléggé kicsi része.