Ho letto il capitolo che hai affermato e posso vedere come potresti essere confuso, poiché il capitolo non descrive come potresti usare oggetti immutabili.
L'immutabilità è una parte fondamentale della programmazione funzionale. Per vedere come funziona, considera questo codice:
MyImmutableClass newInstance = transform(MyImmutableClass originalInstance);
Il metodo transform
accetta l'oggetto originalInstance
, lo trasforma (tale trasformazione può essere qualsiasi operazione) e restituisce un nuovo oggetto contenente la trasformazione.
Perché vorresti creare un nuovo oggetto, invece di modificarne uno esistente?
- Crea una cronologia delle modifiche.
- Semplifica la concorrenza. Gli oggetti immutabili non sono soggetti a problemi di concorrenza come le condizioni di gara. Le funzioni che utilizzano oggetti immutabili possono essere facilmente decomposte in processi concomitanti separati senza problemi.
- Gli oggetti immutabili sono più facili da ragionare.
Nelle applicazioni aziendali che prevedono operazioni CRUD , perché in genere utilizzi già un database con ACID garantisce, è più comune semplicemente mutare i valori nell'oggetto che si desidera modificare e quindi eseguire un salvataggio ( U pdate).