Por que você deveria favorecer a imutabilidade?
Por muitos bons motivos.
Question
Por que você deveria favorecer a imutabilidade?
Less Short Answer
Quando seus objetos são não modificáveis, você não precisa se preocupar com o estado que eles carregam — é o estado com o qual você os criou. Então a depuração fica muito mais simples, porque você não precisa rastrear quando esse estado foi modificado.
Mais Simples em Ambientes Concorrentes
Também é mais simples em um ambiente concorrente. A não modificabilidade vem com thread safety embutida: condições de corrida só podem ocorrer quando você tem uma operação de escrita, e aqui a única operação de escrita que você tem é a criação do seu objeto. Então, se você está usando records, ou classes com campos de instância final, a criação dos seus objetos fica protegida contra condições de corrida.
javapublic record Point(int x, int y) {} // campos implicitamente finalA não modificabilidade torna seu trabalho muito mais fácil na hora de caçar bugs nas suas aplicações.
One Last Word
A imutabilidade vai trazer até uma performance melhor quando o Valhalla entregar as value classes. E pare de zoar dizendo que o Valhalla nunca vai chegar — porque ele está chegando mais cedo do que você imagina.