O que são e como utilizar Value Objects?

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 พ.ย. 2024

ความคิดเห็น • 38

  • @diegocosta3750
    @diegocosta3750 10 หลายเดือนก่อน +1

    Pra ficar melhor, só se tivesse uma dessas por dia!! Parabéns Branas, suas lives são sempre enriquecedoras.

  • @gabrielreis8422
    @gabrielreis8422 11 หลายเดือนก่อน +1

    Que aula boa do caralho véi !!!! Porra, um conteúdo desse de graça é ouro demais!
    Admito que quando ele começou a trocar o DAO por Repository comecei a coringar e ainda vou ter q rever essa live umas 3x pra entender tudo kkkkkkk
    contador: 4x

  • @LucianoLuciano-j2t
    @LucianoLuciano-j2t ปีที่แล้ว +13

    Branas, que aula mano... vc é muito generoso, você realmente muda nossas vida. Abração.

  • @PHP4FUN
    @PHP4FUN ปีที่แล้ว +8

    Impossível não aprender Clean Arch e Clean Code com suas aulas e o seu curso. Obrigado Branas por todas as suas ajudas!!!

  • @kauanmocelin
    @kauanmocelin ปีที่แล้ว

    Assistir qualquer conteúdo técnico/prático teu é muito prazeroso, parabéns Branas!

  • @aoli_lab
    @aoli_lab 7 หลายเดือนก่อน

    Muito obrigado!

  • @migueldaipre10
    @migueldaipre10 ปีที่แล้ว +3

    QUE AULA 😮🎉 voce é fera, obrigado por tanto conteudo bom.

  • @mthsena
    @mthsena ปีที่แล้ว +2

    fera demais, mais um aulão top pra refrescar os conceitos

  • @iuribrindeiro5009
    @iuribrindeiro5009 ปีที่แล้ว +1

    Muito legal essa aula! Outro assunto muito bacana que não vejo com muita frequencia, principalemente na comunidade BR, é "Making impossible states impossible" Ta bem relacionado a ValueObjects mas ficaria mais ligado com o estado de um aggregate, em vez de o que compoe aquele aggregate. Ótima live! 👏

    • @RodrigoBranas
      @RodrigoBranas  ปีที่แล้ว

      Obrigado!!

    • @iuribrindeiro5009
      @iuribrindeiro5009 ปีที่แล้ว

      Outro ponto: Vi uns exemplos muito bacanas de como usar um ValueObject de maneira mais global ainda no blog do fsharpforfunandprofit, onde ele mostra um ValueObject de por exemplo: "NonEmptyStr" ou "ReqStrMaxLen2000". Estou utilizando nos meus projetos e curti demais os resultados. Quando vejo aquele tipo posso ter a certeza (e paz de espirito) de que aquele tipo vai ter um valor valido.

  • @gaiveknopf
    @gaiveknopf ปีที่แล้ว +1

    Branas, que aula meu amigo, planejo refazer o clean code para reforçar. Obrigado pelo excelente conteúdo sempre.

  • @danilodcn
    @danilodcn ปีที่แล้ว

    Live muito boa! Parabéns

  • @ohervis
    @ohervis ปีที่แล้ว +1

    Que aula fera demais!!!!

  • @michelljose6426
    @michelljose6426 ปีที่แล้ว +2

    Ótimo conteúdo!!! Uma dúvida, tem algum problema colocar customização no get,set de um DTO???

    • @RodrigoBranas
      @RodrigoBranas  ปีที่แล้ว

      Não vejo problemas, mas o papel do DTO é só de transferir informações de uma camada pra outra mesmo, não tem papel no domínio

  • @micaelcosta1549
    @micaelcosta1549 ปีที่แล้ว +1

    Branas, mais uma aula fantástica. Gostaria de propor um assunto que pode ser do interesse de muita gente e que poderia ser uma boa live. Como validar objetos de dominio (Entidades, value objects) utilizando uma biblioteca externa. Por exemplo, tendo um value object email (sei que existem regex simples para validar), faz sentido criar uma dependencia direta de uma biblioteca de terceiros para validar se o valor do email é válido ou existe alguma forma de criar um email como por exemplo um factiory method ou mesmo um builder que criaria um email válido mas estaria numa camada mais externa?
    Bom fim de semana e obrigado pelo excelente conteúdo ;)

    • @RodrigoBranas
      @RodrigoBranas  ปีที่แล้ว +1

      você pode utilizar a biblioteca externa dentro do VO, sem problemas, assim como você utilizaria a API da linguagem com Data ou Math. Se você utilizar um Domain Model, esses conceitos ficam na camada de domínio, eu não pulverizaria fora dela... eventualmente no frontend por questões de usabilidade, mas nesse caso existe uma visão de domain em ambos os sistemas (frontend e backend), não com o mesmo nível de detalhes. Obrigado! Grande Abraço!

    • @micaelcosta1549
      @micaelcosta1549 ปีที่แล้ว

      @@RodrigoBranas estive posteriormente a fazer este comentário a ver possibilidades de como abstrair a validação do value object e ficaria algo tão complexo ou na realidade chato de se fazer que realmente torna-se mais prático depender de uma biblioteca exteran e fazer testes que passem pela biblioteca ou então utilizar funções do jest para crias mocks da biblioteca.
      Também andei a tentar no react fazer o mesmo que mostrou no VUE, mas o react trabalha com o conceito de imutabilidade de estado o que torna dificil de usar um objeto de dominio com as suas funções.
      Muito obrigado pela sua resposta e por esta magnifica partilha de conhecimento.
      Continuação de excelentes videos ;)

  • @artu_almeida
    @artu_almeida ปีที่แล้ว +1

    uns meses atras comecei a atuar em um novo projeto e percebi que as classes de contrato das apis estavam com "VO" no final: AccountVO, PaymentVO etc... eu achei estranho, estavam utilizando Value Objects de forma errada, quando eu tive a oportunidade perguntei para o Tech Lead se podíamos trocar o pattern para Dto, pois Value Objects não são utilizados nesse contexto, são objetos de domínio, para contratos o correto é utilizar Data Transfer Object, ele concordou na hora

    • @RodrigoBranas
      @RodrigoBranas  ปีที่แล้ว +1

      Perfeito! Isso mesmo, nesse caso é um DTO, não é um objeto de domínio e por isso não tem uma participação em Aggregates. O DTO é apenas um transportador de dados de entrada e saída. Grande Abraço!

  • @wevertontsousa
    @wevertontsousa ปีที่แล้ว +1

    Aulas incríveis!
    Branas, eu tenho uma dúvida quanto a Construtores em geral.
    Com a sua experiência (no dia a dia), você passa os valores diretamente no construtor, ou deixa o construtor vazio e define os atributos através dos "Setters", ou mesmo que possa passar os valores pelo construtor, o construtor chama o setter de cada atributo? No cenário real eu queria entender se a lógica de validação diretamente no construtor é válida, sendo que as vezes cada atributo vai ter uma regra diferente e assim o construtor poderia ter uma lógica enorme.
    Essa minha dúvida é muito por conta que já ouvi em vários lugares que classes e/ou funções não devem ter muitos parâmetros, e não vejo como isso seja possível na realidade haha...

    • @RodrigoBranas
      @RodrigoBranas  ปีที่แล้ว +1

      O construtor tem o papel de ser um ponto central de construção do objeto, ajudando a preservar a invariância. Não vejo muito sentido em usar "Setters" porque eventualmente seria a combinação de propriedades que faria com que o objeto estivesse em estado válido. Dessa forma, eu acho interessante ter o construtor, métodos fábrica ou builders e modificar o estado por meio de diferentes comportamentos.

  • @arozendojr
    @arozendojr ปีที่แล้ว +2

    57:00 Bem legal a definição VO

  • @lucasarieiv
    @lucasarieiv ปีที่แล้ว

    Conteúdo muito bomm. Outro nível! Consegue disponibilizar o Github?

  • @vicentino09
    @vicentino09 ปีที่แล้ว +1

    👏👏👏

  • @principe.borodin
    @principe.borodin ปีที่แล้ว

    o repositorio nao subiu....

  • @xsamuelx3603
    @xsamuelx3603 ปีที่แล้ว +1

    :)

  • @marcosmacielgodinho9776
    @marcosmacielgodinho9776 ปีที่แล้ว

    No caso está variante o compilador não aceita em linguage c flot .

  • @mariapimentel3099
    @mariapimentel3099 ปีที่แล้ว

    Maria❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤fkl❤❤❤pl❤❤❤❤❤❤❤❤❤❤❤😂

  • @felipeklafke
    @felipeklafke ปีที่แล้ว

    sou absolutamente tarado por objetos de valor. eles sao os primitivos do negócio e da solucao. vale pra todos contextos e tamanhos de solução pq eles forçam voce a entender a linguagem ubiqua e contextualmente na aplicacao da solucao do problemas. fora que ele vale tanto p oo quanto pra qualquer outro paradigma