Nem kell elmagyarázni, ezzel kezdtem
Nem ezzel kezdted! Azzal kezdted, hogy amiatt kell szétvágni, hogy clean code szemüveggel "szebb" legyen.
Ha CC miatt kell szétvágni, akkor több absztrakciós szint van, ha nincs több szint, akkor nem kell!
Persicsb próbálta elmagyarázni, de ott se tanúsítottad jelét annak, hogy megértetted.
Rövidebbre vagy áttekinthetőbbre? Mi a cél?
Természetesen áttekinthetőbbre! Az utolsó példánál sokkal jobban látszik, hogy melyik állapothoz melyik sprite-ok tartoznak. Ha lenne oka, hogy miért vannak a feltételek benne (egy magasabb absztrakciós szint), akkor könnyen lehet, hogy másként lenne áttekinthetőbb, pl. mint ez példa volt:
drawWalk();
drawJump();
drawWait();
drawFight();
Csak ez akkor nem tud működni, ha nincs semmilyen logikai kapcsolat az egyes sprite-ok és egyes állapotok között, mondjuk ezt nehezen tudom elképzelni. Pl. nehéz azt elképzelni, hogy egy feltétel csak úgy ott van és nincs az meg, hogy miért (nincs egy magasabb szintű absztrakció).
Ha van 50 state és 100 sprite, akkor is megéri rajzolni egy 50x100-as mátrixot, aminek a karbantartása egy külön kínszenvedés?
Helyzete válogatja, sok esetben áttekinthetőbb és jobban karbantartható egy deklaratívan, adatszerkezettel megadott kód! Szerializálható, adatbázisban tárolható, külső programmal, GUI-val szerkeszthető, ... Vannak előnyei.
A specifikáció alapján könnyen eldönthető, hogy mi az áttekinthetőbb.