Mi è stato dato del codice Java da guardare, che simula una gara automobilistica, di cui include un'implementazione di una macchina di stato di base. Questa non è una classica macchina a stati informatici, ma semplicemente un oggetto che può avere più stati e può passare da uno stato all'altro in base a una serie di calcoli.
Per descrivere solo il problema, ho una classe Car, con una classe enum annidata che definisce alcune costanti per lo stato della macchina (come OFF, IDLE, DRIVE, REVERSE, ecc.). All'interno di questa stessa classe di auto, ho una funzione di aggiornamento, che consiste fondamentalmente in una dichiarazione di switch di grandi dimensioni che attiva lo stato corrente delle automobili, esegue alcuni calcoli e quindi modifica lo stato delle auto.
Per quanto posso vedere, lo stato di Cars viene utilizzato solo all'interno della sua classe.
La mia domanda è, è questo il modo migliore di affrontare l'implementazione di una macchina a stati della natura sopra descritta? Sembra la soluzione più ovvia, ma in passato ho sempre sentito dire che le "istruzioni switch sono pessime".
Il problema principale che posso vedere qui è che l'istruzione switch potrebbe diventare molto grande quando aggiungiamo altri stati (se ritenuto necessario) e il codice potrebbe diventare ingombrante e difficile da mantenere.
Quale sarebbe una soluzione migliore a questo problema?