Odpowiedź brzmi: typy niezmienne są bezpieczniejsze od błędów, łatwiejsze do zrozumienia i bardziej gotowe na zmiany. Zmienność utrudnia zrozumienie, co robi Twój program, io wiele trudniej wymusić kontrakty.
Czy mutowalne obiekty są złe?
Wreszcie, obiekty mutowalne są zabójcami w równoległych sytuacjach. Za każdym razem, gdy uzyskujesz dostęp do mutowalnego obiektu z oddzielnych wątków, musisz poradzić sobie z blokowaniem. Zmniejsza to przepustowość i znacznie utrudnia utrzymanie kodu.
Dlaczego stan udostępnienia jest zły?
Współdzielony stan zmienny działa w następujący sposób: Jeśli dwie lub więcej stron może zmienić te same dane (zmienne, obiekty itp.). A jeśli ich życia się pokrywają. Wtedy istnieje ryzyko, że modyfikacje jednej ze stron uniemożliwią innym stronom poprawne działanie.
Dlaczego niezmienność to dobra rzecz?
Oprócz zmniejszonego zużycia pamięci, niezmienność pozwala na optymalizację aplikacji poprzez wykorzystanie równości referencji i wartości. Dzięki temu naprawdę łatwo jest sprawdzić, czy coś się zmieniło. Na przykład zmiana stanu w składniku reakcji.
Jakie są wady niezmienności?
Jedyną prawdziwą wadą klas niezmiennych jest to, że wymagają one oddzielnego obiektu dla każdej odrębnej wartości. Tworzenie takich obiektów może być kosztowne, zwłaszcza jeśli są duże. Załóżmy na przykład, że masz milion-bitową wartość BigInteger i chcesz zmienić jej mniej znaczący bit:Moby BigInteger=…; moby=moby.