La risposta è che i tipi immutabili sono più al sicuro dai bug, più facili da capire e più pronti per il cambiamento. La mutevolezza rende più difficile capire cosa sta facendo il tuo programma e molto più difficile far rispettare i contratti.
Gli oggetti mutabili sono cattivi?
Infine, gli oggetti mutabili sono killer in situazioni simultanee. Ogni volta che accedi a un oggetto mutabile da thread separati, devi occuparti del blocco. Ciò riduce il throughput e rende notevolmente più difficile la manutenzione del codice.
Perché lo stato condiviso è cattivo?
Lo stato mutevole condiviso funziona come segue: Se due o più parti possono modificare gli stessi dati (variabili, oggetti, ecc.). E se le loro vite si sovrappongono. Quindi c'è il rischio che le modifiche di una parte impediscano ad altre parti di funzionare correttamente.
Perché l'immutabilità è una buona cosa?
Oltre all'utilizzo ridotto della memoria, l'immutabilità ti consente di ottimizzare la tua applicazione utilizzando l'uguaglianza di riferimento e valore. Questo rende davvero facile vedere se qualcosa è cambiato. Ad esempio un cambio di stato in un componente di reazione.
Quali sono gli svantaggi dell'immutabilità?
L'unico vero svantaggio delle classi immutabili è che richiedono un oggetto separato per ogni valore distinto. La creazione di questi oggetti può essere costosa, soprattutto se di grandi dimensioni. Ad esempio, supponiamo di avere un BigInteger da un milione di bit e di voler cambiare il suo bit di ordine inferiore:BigInteger moby=…; moby=moby.