Se hai bisogno di qualcosa che si comporta come un gruppo di variabili indipendenti ma legate insieme con del nastro adesivo (ad esempio le coordinate di un vettore), usa una struttura campo esposto . I campi di una struttura di campo esposto sono mutabili quando la struttura è memorizzata in una posizione mutabile e immutabili quando la posizione di archiviazione è memorizzata in una posizione immutabile.
Poiché una struttura a campo aperto si comporta come un mucchio di variabili indipendenti ma correlate, alcune persone che pensano che tutto dovrebbe comportarsi come un oggetto le deride come "malvagie". Direi che, sebbene le strutture a campo aperto o altrimenti mutevoli non siano generalmente adatte in luoghi che richiedono qualcosa che si comporta come un oggetto, sono perfette in posti dove si avranno bisogno di un mucchio di variabili incollate insieme con del nastro adesivo.
È possibile utilizzare oggetti di classe immutabili per contenere mazzi di valori indipendenti ma correlati. Può anche essere vantaggioso nei casi in cui i valori compositi (cioè una particolare combinazione di valori) saranno trasmessi molto più frequentemente di quanto non siano stati creati. D'altra parte, se il codice che contiene un riferimento a un vettore (34,39) vuole contenere un riferimento a un vettore il cui componente x è uno più grande, non sarà in grado di incrementare semplicemente un campo (come potrebbe una struttura) ma deve invece creare un oggetto vettoriale completamente nuovo (35,39). Il costo delle prestazioni di fare questo non sarà un problema se non si debbano mai eseguire tali operazioni ripetutamente all'interno di un loop interno. D'altro canto, se un programma eseguisse frequentemente loop significativi il cui scopo principale fosse la costruzione di versioni leggermente modificate di oggetti, il tempo necessario per costruire tali oggetti potrebbe diventare una frazione sostanziale del tempo di esecuzione complessivo.