Parabéns Alberto, achei que faz muito sentido. Já perdi as contas de quantas vezes, sob a desculpa de reutilização de código eu já fiz um componente que deveria tomar todas as decisões do fluxo. No início, de forma ingênua o componente parece simples, porém, com o crescimento das necessidades e especificidades acaba que toda vez ele deve sofrer uma refatoração para corrigir pontos que divergem entre os usos. Para mim o estudo de diminuição de carga cognitiva faz mais sentido a cada dia.
@DevEficiente5 ай бұрын
Opaaaa, legal demais que curtiu!
@danieljazz15 ай бұрын
Muito boa essa reflexão. É algo que faz muito sentido mesmo! Porque a tendência é sempre querer mexer no que já existe e às vezes dá mais trabalho do que se tivesse simplesmente criado um novo endpoint.
@DevEficiente5 ай бұрын
Opa, enxergo de maneira parecida. Não é trivial encontrar o nível certo de generalização.
@danielvicentefagundes67745 ай бұрын
Interessante
@DevEficiente5 ай бұрын
hehehehe :).
@alinecarvalho3735 ай бұрын
Bastante interessante essa reflexao Alberto. Acho que no exemplo dado, faz mais sentido mesmo apenas 1 endpoint mais coeso para cada forma de pagamento. Agora se o me contexto me exigisse multiplas origens de pagamento alem do hotmart do exemplo, eu tenderia para uma implementacao similar a segunda opcao, ja que nesse caso (pelo menos pra mim), seria ruim ter varias implementacoes especificas em funcao de cada checkout. Outra coisa que fiquei pensando e que, na segunda opcao, alem das decisoes de fluxo, o codigo tambem teria que ter o cuidado de tratar o pagamento da forma correta ja que o client pode enviar novo pagamento request com multiplas informacoes de pagamento (cartao e pix por exemplo), sendo que o intuito seria efetuar apenas 1 pagamento.
@DevEficiente5 ай бұрын
Oi Aline, massa que curtiu! Você fala de ter endpoints por origem para lidar com os tipos de pagamentos daquela origem?
@RaphaelSousa-or1dl5 ай бұрын
To implementando exatamente a segunda implementação que você propôs, temos um fluxo comum para todos os pagamentos, mas as implementações das interfaces dos processadores estão em microserviços. Foi uma ideia dificil visto o acoplamento e dificuldade em possíveis debugs, mas teremos fluxos complexos nos processadores e decidimos mante-los separados. Ainda to no inicio dessa implementação mas to me preparando pros possíveis problemas que surgirão devido a essa decisão