devterview_$ iniciar simulação

Objetos imutáveis: o que ganham e o que custam

MédioPlenoDesign OO

Pergunta

Quais os benefícios de projetar objetos imutáveis, e qual o custo?

Resposta esperada

Um objeto imutável não muda de estado depois de criado — pra 'mudar', você cria uma nova instância. Ganhos: seguro pra compartilhar entre threads sem lock (não tem race); pode ser usado como chave de mapa e cacheado sem medo; mais fácil de raciocinar (o valor que você recebeu não vai mudar debaixo de você depois); invariantes checados só uma vez, no construtor. Custos: criar novas instâncias a cada mudança gera pressão de alocação/GC (mitigado por 'persistent data structures' que compartilham a parte não alterada); um pouco mais de código (métodos `with...` em vez de setters); e não serve bem pra objetos genuinamente stateful de vida longa (um buffer que você preenche). Regra prática: value objects (dinheiro, data, coordenada) imutáveis por padrão; entidades com ciclo de vida podem ter estado mutável controlado.

Por que perguntam isso

Pergunta pleno/sênior. Sinal de leitura: 'persistent data structures' e a distinção value object x entidade.

#imutabilidade#value-object#thread-safety
publicidade

Relacionadas