Tra le cose di cui dovresti preoccuparti come programmatore, l'overhead di inizializzazione è molto, molto in basso nella lista. Il tuo raggruppamento suggerito è un primo passo minimo.
Il prossimo passo è quello di riconsiderare se è effettivamente necessario mantenere tutti i dati insieme in una classe del caso. Non fai quasi mai e di solito ti fa male creare un grande accoppiamento.
Una cosa che spesso funziona è invece di memorizzare una lista massiccia di myClasses
, memorizzare singoli elenchi di myStorageContainers
o anche args
. Quindi ri-associalo al volo secondo necessità utilizzando zip
o map
o alcuni di questi.
Questo sembra sbagliato per i programmatori addestrati in lingue imperative, il cui istinto è quello di proteggere i loro dati da altre persone che lo mutano e il cui stile architettonico si è sviluppato di conseguenza.
Immutabilità significa che non è necessario memorizzare i dati nello stesso contenitore al fine di mantenere relazioni invarianti tra loro. Se ho un List
immutabile di arg0
e un altro List
immutabile di arg1
che vengono creati insieme, allora so che l'ennesimo elemento del primo elenco va sempre con l'ennesimo elemento del secondo elenco. Allo stesso modo per oggetti memorizzati in mappe immutabili separate indicizzate utilizzando la stessa chiave. Non devono essere fisicamente nella stessa struttura dati.
Fai una prova e guarda. Probabilmente troverai la tua modularità al rialzo quando le funzioni non sono più abbinate a una case case gigante.