Esta refatoração do useCarrinhoContex, realocação do useMemo e o uso do useReducer além do propósito das melhoria do código, vai de encontro com as ideias do SOLID, certo?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Esta refatoração do useCarrinhoContex, realocação do useMemo e o uso do useReducer além do propósito das melhoria do código, vai de encontro com as ideias do SOLID, certo?
Olá Davi!
Sim, a refatoração que você está fazendo no useCarrinhoContext, utilizando useMemo e useReducer, está alinhada com os princípios do SOLID, especialmente no que diz respeito à responsabilidade única e ao princípio de substituição de Liskov.
Ao utilizar o useReducer, você está separando a lógica de atualização do estado do componente, o que melhora a clareza e a manutenção do código. Isso se alinha com o princípio de responsabilidade única, pois cada função e componente tem uma única responsabilidade bem definida. Além disso, ao definir as ações e o reducer, você está criando um contrato claro sobre como o estado pode ser modificado, o que também está em linha com o princípio de substituição de Liskov, garantindo que as substituições de comportamento sejam previsíveis e seguras.
Por exemplo, ao criar ações como addProdutoAction, removeProdutoAction e updateQuantidadeAction, você está encapsulando a lógica de manipulação do carrinho de forma que, se precisar alterar a forma como um produto é adicionado ou removido, você só precisará modificar a lógica dentro dessas funções, sem impactar o restante do código.
Espero ter ajudado e bons estudos!