Siemka,
na forum często przewijają się rady, by stosować niemutowalne obiekty, nie łapię czemu to jest dobre, stąd moje pytanie, gdzie i dlaczego stosujecie tego typu obiekty i jakie przesłanki za tym stoją? Druga kwestia to, kiedy stosujecie tylko mutowalne obiekty.
Najczęstsze dwa powody ZA o których czytałem przywołam krótko poniżej.
Niemutowalność daje nam to, że stan obiektu na który wskazuje się nie zmieni, czyli nie muszę się martwić, że ktoś gdzieś bez mojej wiedzy nie zmieni mi stanu obiektu np. w funkcji którą wywołuję. Mam wrażenie, że to paranoidalne zabezpieczenie można porównać do odcięcia sobie dłoni, bo boimy się, że oparzymy sobie palec.
Kolejny argument to wielowątkowość, to jasne że immutability będzie thread-safe, bo nie musimy bawić się w synchronizację pomiędzy wątkami. To będzie dla mnie użyteczny tylko wtedy, gdy chcemy obiekt przekazać do drugiego wątku i nie obchodzi nas, co ten wątek tam z nim zrobi.
Abstrahując od samego designu to każda zmiana pola tworzy nowe obiekty, co wywołuję częściej GC, bo jest zmuszony ciągle czyścić pamięć ze zmienionych obiektów.