Imutabilidade em outros escopos?

22 views
Skip to first unread message

Maurício Aniche

unread,
Dec 19, 2017, 9:30:20 AM12/19/17
to tdd-no-mundo-real
Oi pessoal,

Semana passada eu e o Alberto discutimos sobre mutabilidade e imutabilidade em sistemas Java. Em sistemas comerciais, é bastante comum vc ter entidades e essas entidades são geralmente mutáveis; ou seja, vc tem setters que modificam a entidade de alguma forma.

A desvantagem é que é fácil vc perder o controle de quem está mudando o estado do objeto quando vc tem uma longa lista de métodos invocados.

NotaFiscal nf = // veio do banco;
metodo1(nf)
  metodo2(nf)
   metodo3(nf) <-- muda o estado
  metodo2(nf) <- aqui talvez vc nao saiba que metodo 3 alterou o estado
metodo1(nf) <- aqui menos ainda

Pensamos então na possibilidade de alertar o usuário quando um objeto desses é alterado fora do escopo em que é declarado.

Começamos a implementação de uma ferramenta bem simples que alerta pra esse tipo de situação em Java: http://github.com/mauricioaniche/immutablex.

Ainda não coloque muita fé na ferramenta, pois gastamos apenas 2h nela. A ideia é explorar!!

Quero saber o que vcs acham da ideia!

Um abraço,
--
Maurício Aniche
Assistant Professor
Delft University of Technology
@mauricioaniche

Gilberto

unread,
Dec 21, 2017, 9:15:16 AM12/21/17
to tdd-no-m...@googlegroups.com
Oi Maurício,

Não sei vocês, mas esses assuntos novos demoram muito a aterrizar em meu contexto(sistemas comerciais/publicos web interno).
Acredito que imutabilidade em sistemas comerciais é ilusória.
Posso até não entender todo esse "hype" por imutabilidade, pois nunca precisei implementar algo do gênero. Agora, transação é algo notoriamente essencial.
Uso o modelo como "backbone" pelas camadas do sistema. Na minha experiência (que é limitada, centrada em dados), o modelo possui métodos para validação, algum cálculo e controle das colaborações(relacionamentos).
E sei que em cada camada(view-controller e service-repository) haverá modificação tanto na inserção quanto na leitura/modificação.
Acredito sim que esse conceito aplica-se a um nicho que até o momento não encontrei.

Um abraço,

Gilberto

--
Você recebeu essa mensagem porque está inscrito no grupo "TDD no mundo real" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para tdd-no-mundo-real+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Fabrício Cabral

unread,
Dec 21, 2017, 2:34:22 PM12/21/17
to tdd-no-m...@googlegroups.com
Olá Gilberto!

Apenas por curiosidade:

Acredito que imutabilidade em sistemas comerciais é ilusória.

Por que você acha que é ilusória?


E sei que em cada camada(view-controller e service-repository) haverá modificação tanto na inserção quanto na leitura/modificação.

Mas quem muda são os objetos ou o dados que se encontram no BD?


At.te.

-- 
--fx

Gilberto

unread,
Dec 22, 2017, 11:10:21 AM12/22/17
to tdd-no-m...@googlegroups.com
Em 21 de dezembro de 2017 16:34, Fabrício Cabral <fabri...@gmail.com> escreveu:
Olá Gilberto!

Apenas por curiosidade:

Acredito que imutabilidade em sistemas comerciais é ilusória.

Por que você acha que é ilusória?


E sei que em cada camada(view-controller e service-repository) haverá modificação tanto na inserção quanto na leitura/modificação.
Esse é o porquê.
 

Mas quem muda são os objetos ou o dados que se encontram no BD?

De onde vem os objetos em sistemas comerciais? Surgem por formulários de entrada ou por busca/leitura da base.


Maurício Aniche

unread,
Dec 22, 2017, 12:07:17 PM12/22/17
to tdd-no-m...@googlegroups.com
Oi Gilberto,

Acho que aqui minha opinião vai ser parecida com a da thread anterior. Depende muito do sistema: se for um sistema que basicamente guarda, visualiza e altera dados, controlar os pontos de mutabilidade talvez não seja mesmo uma preocupação!

Mas se seu sistema possui regras de negócio que fazem com que objetos interajam e alterem seus estados com frequência, aí controlar melhor onde seus objetos mudam pode ajudar em eventuais depurações, em minha opinião! E foi pra esses casos que fizemos a ferramenta.

Faz sentido?

Um abraço,

--
Você recebeu essa mensagem porque está inscrito no grupo "TDD no mundo real" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para tdd-no-mundo-r...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages