Que aula perfeita! Comecei a ler Arquitetura Limpa recentemente e logo nos primeiros capítulos tive dificuldade de entender SOLID. Mas esses exemplos práticos deixaram tudo mais claro. Obrigado!
Gostei do vídeo! Há poucos vídeos que abordem princípios como solid de forma prática, se puder trazer mais conceitos desse tipo, como por exemplo arquitetura limpa, de forma prática que nem fez nesse vídeo, iria adorar! Parabéns cara, continua.
Ufa, ainda bem que vc resolveu o acoplamento de repository e e-mail dentro de processa pedido 😅 Ainda bem que esperei até DIP pra ver vc resolvendo kkk Boa irmão, ótima aula 👏🏼👏🏼👏🏼
Parabéns pelo vídeo, ficou bem bacana!!! (até fiz um resumo aqui rsrsrs). Dando meus 2 centavos aqui, só achei que ficou um pouco em aberto na hora que tu falou sobre o princípio de substituição de Liskov, pelo exemplo utilizado mesmo. Um outro exemplo seria a aplicação do padrão NullObject. O objeto que representa o estado nulo da classe pai pode ser utilizado em todos os lugares onde uma instância da classe pai também poderia ser seria utilizada.
Muito bom o conteúduo. Parabéns!!! Fiquei com uma dúvida no OCP? Digamos que eu já tenha ali minha classe de processar pedidos pronta, mês que vem eu precise incluir uma nova validação, um mês depois, eu preciso novamente incluir uma nova regra de negócio, terei de extendê-la a cada vez que precisar de uma regra nova?
Sim, sempre cuidando para não ferir o LSP, uma vez que muito provavelmente essa sua classe filha da filha não conseguiria ser trocada pela classe "Processa Pedido", nesse cenário eu atuaria criando essa segunda alteração com base na classe pai "Processa Pedido" e não da classe filha.
Gostei do vídeo, mas o OCP acho que não é aplicável, pois sempre terá que alterar alguma coisa. No seu exemplo, está lindo, porém na prática teríamos que alterar a classe que chama a classe ProcessaPedido para chamar a classe ProcessaPedidoComAlteracaoRequerida, teve alteração. E se a validação fosse no meio do método? A validação fosse depois do salvar e antes do enviarEmailConfirmação? Você teria que refatorar a classe ProcessaPedido separando o método processar em 3 métodos, um para a regra, outro para o envio de email e o processar chamando esses 2, isso para poder estender a classe e chamar os métodos em momentos diferentes. Ou seja, teve alteração na classe ProcessarePedido, mesmo que não mudou o comportamento, teve alteração e agora temos mais 2 métodos para testar. Não sei se entendi corretamente esse princípio, pois para mim não é aplicável. Agora uma dúvida: Se fosse necessário mais uma validação depois que a classe ProcessaPedidoComAlteracaoRequerida já estivesse em produção, teria que criar mais uma classe estendendo a classe ProcessaPedidoComAlteracaoRequerida?
Você está totalmente certo, esse é um dos princípios que também busco evitar, na verdade, a maioria dos autores sugere composição sobre herança, geralmente o "usar" vai funcionar melhor do que o "ser"(da herança). Eu vou te falar, não utilizamos herança em quase lugar nenhum nas aplicações em produção que meu time gerencia, apenas em classes abstratas que contem as implementações concretas para que todas as classes "services" tenham as implementações concretas, mas do modo que o OCP propõe em nenhum lugar. Mas respondendo a sua pergunta, sim, criaria uma nova classe para adicionar essa funcionalidade, claro que cuidando para não ferir LSP. Uma maneira mais elegante seria criar essa nova classe herdando a classe inicial e não a filha. Obrigado pelo feedback e pelas dúvidas, espero tê-las sanado.
Para qualquer coisa que normalmente vamos fazer(CRUD) o VS já resolve, usar IDE para esse tipo de coisa é matar uma formiga com um canhão... Para projetos gigantescos com ERP's e etc realmente faz sentido
Que aula perfeita! Comecei a ler Arquitetura Limpa recentemente e logo nos primeiros capítulos tive dificuldade de entender SOLID. Mas esses exemplos práticos deixaram tudo mais claro. Obrigado!
Fico feliz em te ajudar na sua jornada wilknis👊
Gostei do vídeo! Há poucos vídeos que abordem princípios como solid de forma prática, se puder trazer mais conceitos desse tipo, como por exemplo arquitetura limpa, de forma prática que nem fez nesse vídeo, iria adorar! Parabéns cara, continua.
Show! Fico feliz que tenha curtido, em breve vou lançar uma série de vídeo aplicando arquitetura limpa na prática.
Umas das melhores explicações práticas a respeito do tema. Aula excelente. Obrigado, professor!!
@@joaopauloalcantaradasilva8823 valeu meu nobre!
Um dos melhores vídeos sobre SOLID que já vi até hoje!
Show Ader, fico feliz que tenha gostado!👊
👏👏 Ótima aula professor!
Parabéns Sandro. Ajudou bastante meu entendido deste assunto.
Show vinicius!👊
Sempre no Padrão!!👏
Pô cara, valeu mesmo
Era exatamente o vídeo q eu tava procurando
Show Breno! Tmj😎👊
Ótimo video, deu pra entender muito bem
Show gustavo! Fico feliz que tenha gostado
Bão demais!!
Valeu!
Ufa, ainda bem que vc resolveu o acoplamento de repository e e-mail dentro de processa pedido 😅
Ainda bem que esperei até DIP pra ver vc resolvendo kkk
Boa irmão, ótima aula 👏🏼👏🏼👏🏼
😂😂 Valeu meu nobre!
top das galaxias
Show meu mano, fico feliz em ajudar👊
muito bom!!!
Show! Fico feliz que tenha gostado!
Ótimo conteúdo, mano!
Valeu meu nobre!
Curti mt man, parabéns!
Show Érico! Tmj 👊🏻
Parabéns pelo vídeo, ficou bem bacana!!! (até fiz um resumo aqui rsrsrs). Dando meus 2 centavos aqui, só achei que ficou um pouco em aberto na hora que tu falou sobre o princípio de substituição de Liskov, pelo exemplo utilizado mesmo. Um outro exemplo seria a aplicação do padrão NullObject. O objeto que representa o estado nulo da classe pai pode ser utilizado em todos os lugares onde uma instância da classe pai também poderia ser seria utilizada.
Boa! Ótimo complemento, obrigado
Muito bom o conteúduo. Parabéns!!! Fiquei com uma dúvida no OCP? Digamos que eu já tenha ali minha classe de processar pedidos pronta, mês que vem eu precise incluir uma nova validação, um mês depois, eu preciso novamente incluir uma nova regra de negócio, terei de extendê-la a cada vez que precisar de uma regra nova?
Sim, sempre cuidando para não ferir o LSP, uma vez que muito provavelmente essa sua classe filha da filha não conseguiria ser trocada pela classe "Processa Pedido", nesse cenário eu atuaria criando essa segunda alteração com base na classe pai "Processa Pedido" e não da classe filha.
qual é o video anterior?
@@elacoda o vídeo anterior falo da teoria do S.O.L.I.D, esse aqui ruclips.net/video/hdXI5gaLNuQ/видео.htmlfeature=shared
Gostei do vídeo, mas o OCP acho que não é aplicável, pois sempre terá que alterar alguma coisa. No seu exemplo, está lindo, porém na prática teríamos que alterar a classe que chama a classe ProcessaPedido para chamar a classe ProcessaPedidoComAlteracaoRequerida, teve alteração. E se a validação fosse no meio do método? A validação fosse depois do salvar e antes do enviarEmailConfirmação? Você teria que refatorar a classe ProcessaPedido separando o método processar em 3 métodos, um para a regra, outro para o envio de email e o processar chamando esses 2, isso para poder estender a classe e chamar os métodos em momentos diferentes. Ou seja, teve alteração na classe ProcessarePedido, mesmo que não mudou o comportamento, teve alteração e agora temos mais 2 métodos para testar.
Não sei se entendi corretamente esse princípio, pois para mim não é aplicável.
Agora uma dúvida: Se fosse necessário mais uma validação depois que a classe ProcessaPedidoComAlteracaoRequerida já estivesse em produção, teria que criar mais uma classe estendendo a classe ProcessaPedidoComAlteracaoRequerida?
Você está totalmente certo, esse é um dos princípios que também busco evitar, na verdade, a maioria dos autores sugere composição sobre herança, geralmente o "usar" vai funcionar melhor do que o "ser"(da herança).
Eu vou te falar, não utilizamos herança em quase lugar nenhum nas aplicações em produção que meu time gerencia, apenas em classes abstratas que contem as implementações concretas para que todas as classes "services" tenham as implementações concretas, mas do modo que o OCP propõe em nenhum lugar.
Mas respondendo a sua pergunta, sim, criaria uma nova classe para adicionar essa funcionalidade, claro que cuidando para não ferir LSP. Uma maneira mais elegante seria criar essa nova classe herdando a classe inicial e não a filha.
Obrigado pelo feedback e pelas dúvidas, espero tê-las sanado.
Java e VSCode é meio estranho. 😅
Hushasua depois de um tempo se acostuma
@@sandroramos1703 O bom do VSCode é que da para usar o Copilot. Estava usando aqui e gostei. :D
Que crime usar vscode
Para qualquer coisa que normalmente vamos fazer(CRUD) o VS já resolve, usar IDE para esse tipo de coisa é matar uma formiga com um canhão... Para projetos gigantescos com ERP's e etc realmente faz sentido
😂😂😂😂😂
Um dos melhores vídeos sobre SOLID que já vi até hoje!
@@lucasborgesmarx7794 👊🏻