Nem "feltétlenül"? Most akkor vannak szabályok vagy rugalmas a dolog?
SLAP szerint külön kell venni, de ennek azért vannak fokozatai.
Ha egy szinten csak egy absztrakció van, akkor ott van az a rengeteg előny, amit írtam, és van egy pár hátrány. Hiába jóval olvashatóbb, karbantarthatóbb, ... a kód, ha a performancia miatt nem maradhat úgy.
Ennél kicsit rosszabb, ha két absztrakciós szint van egyben, még rosszabb, ha három, ...
Ezt se sikerült hiba nélkül implementálnod, ez a kód nem azt csinálja, amit kellene... :/
Miért nem?
Szétszedted egy csomó különálló helyre azt, ami amúgy egybe tartozik.
Úgy, hogy szétszedted több helyre és nem látod egyben?
Absztrakció: "a lényeges és lényegtelen tulajdonságok elválasztása, a lényeges tulajdonságok kiemelése és a lényegtelen tulajdonságok figyelmen kívül hagyása".
Kiemeltem az adott szinten lényeges tulajdonságokat, az azon a szinten lényegteleneket pedig egy szinttel lejjebb toltam. A unit kirajzolásakor az a lényeges, hogy mit kell kirakni, hogy pontosan hová az lényegtelen. Az is jó, hogy a pozíciók egymás mellé kerülnek, mert azok egymáshoz viszonyított helyzetük lényeges és a pozíció változtatáskor nem kell egy hosszú függvényben konstansokat cserélnem. Utóbbi esetben sokkal nagyobb az esélye, hogy hibát vétesz.
Ha változik a "fortified" pozíciója és csak azé, akkor miért lesz könnyebben módosítható?
Ha változik és csak azé változik, akkor kell egy új POS_STATE_FORTIFIED és a rövid drawState-ben kell kicserélni az adott sornál a POS_STATE-et erre az újra.
Változhat még ezer minden, pl. ha:
- változik bármelyik meglévő pozíciója, akkor csak a pozíciós konstansánál kell kicserélnem az értéket, könnyen megtalálom, kicsi az esély a hibára;
- új állapotot kell kirajzolni, akkor csak a drawState-et kell módosítani;
- változik a sprite kirajzolása, akkor csak a drawSprite-ot kell változtatni;
- új elemet kell a unithoz megjeleníteni, akkor csak a drawUnit változik és lesz egy új rövid rajzoló az új elemhez.
Minden esetben csak egy kis részt érint a változás, sokkal kisebb a hibázási lehetőség, sokkal kevesebbet kell az esetleges unit teszteken változtatni.
Ezzel a forrással pont optimalizációt csökkentettél
Hogyan valósítanád meg a saját kódoddal, hogy az egyes unit elemek kirajzolása egymással párhuzamosan történjen?
Hogyan valósítanád meg a saját kódoddal, hogy bizonyos feltételek esetén más sorrendben fussanak le az egyes unit elemek kirajzolásai?
Egyébként nagyszerű példája annak, hogy mennyire káros tud lenni az erőltetett kódminőség "javítás"... elvisz egy csomó időt egy csomó látszólagos előnyért.
Szerintem nem látszólagosak az előnyök!
Nem akarlak se Téged, se mást meggyőzni!
Örülök, hogy újra képbe került a kódminőség és egy kicsit tudtunk a témában gondolatokat cserélni.
Remélem azért lesznek olyanok, akik tudnak ebből profitálni a későbbi munkájuk során!