Attualmente sto progettando un programma piuttosto ampio che coinvolgerà la simulazione di modelli matematici / fisici e la raccolta di dati (non ho ancora implementato alcun codice). Uno dei problemi principali che sto affrontando è come passare facilmente i dati senza dover disporre di più copie di dati (che potrebbero essere obsoleti e ridondanti).
Inizialmente pensavo di fare in modo che gli oggetti del modello implementassero una funzione che restituisce una struttura di dati contenente copie dei loro dati, quindi raccoglie tutte le strutture di dati insieme e le trasmette. Ciò comporterebbe tuttavia un sacco di copie e i dati non verrebbero più mappati sull'oggetto reale. (L'idea della struttura dei dati che avevo implicherebbe l'uso di un trie in modo che i dati fossero carini e gerarchici e le ricerche possono essere fatte facilmente con una stringa)
Quindi ora pensavo che invece di progettare il programma per usare una struttura dati per passare i dati, il programma avrebbe semplicemente passato il modello, e quindi i dati possono essere estratti con la riflessione. Ciò eviterà praticamente qualsiasi ridondanza e i dati passati saranno sempre aggiornati.
Il problema è che anch'io ho bisogno che questo programma sia veloce (ha dei limiti soft in tempo reale), e non sono sicuro riguardo all'impatto delle prestazioni della riflessione. E la riflessione sembra piuttosto brutta. Ma allo stesso tempo, la gente dice che non è mai una buona idea ottimizzare in anticipo, quindi sono sulla barriera qui.
Quindi dovrei progettare il programma per usare la riflessione e, in caso affermativo, con quale libertà? O dovrei cercare di evitare il riflesso il più possibile durante la progettazione?