6. Programação Funcional
Imutabilidade elimina condições de corrida. Separe o mutável do imutável.
Resumo
- Base: variáveis não mudam. Sem atribuição, sem condição de corrida, deadlock ou atualização concorrente.
- Exemplo: quadrados de 1 a 25. Java muta variável; Clojure só compõe funções.
- Segregação de mutabilidade: componentes imutáveis puros + poucos componentes mutáveis protegidos (transações).
- Event sourcing: guardar transações, não estado. Estado = soma dos eventos. Só CRUD → só CR.
- Arquiteto deve empurrar o máximo de processamento para componentes imutáveis.
Perguntas-chave
responda de cabeça, depois abraQue problemas a imutabilidade elimina?
Condições de corrida, deadlocks e atualizações concorrentes. Todos vêm de variáveis mutáveis.
O que é segregação de mutabilidade?
Separar o sistema em componentes imutáveis e componentes mutáveis mínimos, com acesso protegido.
O que é event sourcing?
Armazenar a sequência de eventos/transações em vez do estado atual. O estado é recalculado a partir deles.
Exercícios de fixação
0/5 respondidas1.
Por que a imutabilidade interessa ao arquiteto?
2.
Em um sistema com alta concorrência, qual estratégia o capítulo recomenda?
3.
Um banco de event sourcing permite quais operações básicas?
4.
Uma conta bancária guarda apenas as transações e calcula o saldo quando necessário. Isso é:
5.
Qual a limitação prática de imutabilidade total, apontada no capítulo?