Ho un progetto in C (non chiedere perché ma deve essere in C), dove ho bisogno di tracciare più pezzi di dati e comandi per diversi moduli. Alcune azioni intraprese dal programma dipendono dalle interazioni tra queste diverse parti di dati (ad esempio se foo == 3 e bar == 4 do X, altrimenti fai Y). Alcune di queste parti di dati saranno strutture che raggruppano informazioni simili, alcune saranno solo primitive.
Mi chiedo quale sarebbe il modo migliore per implementarlo. Personalmente, penso che ogni dato debba essere la sua variabile in questo modo:
static int module_state;
static M1_Data module_1_data;
static int last_m1_command;
static M2_Data module_2_data;
etc...
Uno dei miei colleghi suggerisce invece di gestire tutto in una super struttura. Il suo ragionamento è che tutto può essere passato in un colpo solo se necessario, e renderà più facile tracciare dove tutto è, piuttosto che avere un mucchio di variabili perdenti. La sua idea è per qualcosa del genere:
struct{
int module_state;
M1_Data module_1_data;
int last_m1_command;
M2_Data module_2_data;
...
} SuperState;
static SuperState state
Non sono sicuro di essere d'accordo con il suo ragionamento. Quale sarebbe il modo migliore per gestirlo e quali sono i lati positivi / negativi di entrambi i metodi diversi da quelli elencati?