1
resposta

Duvida Sobre Boas Práticas

Pessoal, fiz a solução abaixo encarando como um desafio antes de avançar nas aulas e cheguei no seguinte resultado:

        this._negotiationList = new Proxy(new NegotiationList(), {
            get: function(target,prop, receiver) {
                if(["add", "releaseNegotiations"].includes(prop)) {
                    console.log("Intercepted by proxy... Get: ", prop)
                    return function(handleUpdateModel, negotiation = undefined) {
                        negotiation ? target[prop](negotiation) : target[prop]() ;
                        handleUpdateModel(target);
                    };
                }
                return target[prop];
            }
        });

Método Add do NegociacaoController:

    add(event) {
        event.preventDefault();

        const negotiation = this._createNegotiation();        
        this._negotiationList.add**((negotiationList) => this._negotiationsView.update(negotiationList), negotiation);**
        this._negotiationsMessage.text = "Negociação inserida com sucesso";
        this._negotiationMessageView.update(this._negotiationsMessage.text);
        this._resetForm();
    }

Observa que enviei um arrow function invocando a minha função que é responsável por atualizar o modelo. E não usei o Reflect como na solução.

A forma que resolvi é "aceitável" do ponto de vista de boas práticas e tal? Ou de fato é "necessário" o uso da Reflect?

abs!

1 resposta

Olá Wander, tudo bem com você?

Peço desculpas pela demora no retorno.

Meus parabéns pela implementação do código e por se desafiar e ir além do proposto nas atividades.

A sua solução utilizando uma função anônima para atualizar o modelo ao chamar o método add é uma abordagem válida e não há necessidade de usar a função Reflect necessariamente. Existem diferentes formas de resolver um problema em programação, algumas mais onerosas, outras nem tanto.

A função Reflect é uma API do JavaScript que permite invocar métodos padrão do objeto, como get e set, e também permite a implementação de métodos personalizados. No caso do seu código, o uso da função Reflect não será necessária, uma vez que a função anônima que você criou já está realizando a atualização do modelo adequadamente.

Vale lembrar que o uso de funções anônimas pode tornar o código mais difícil de entender e manter, especialmente se for necessário efetuar alterações no futuro.

No caso do curso, a escolha de utilizar a API Reflect foi visa mostrar uma alternativa de como mudar o contexto de uma função no JavaScript, prezando por fins didáticos de mostrar soluções do mercado.

Em resumo, a sua solução parece ser válida e não há necessidade de usar a função Reflect, mas considere a possibilidade de utilizar funções nomeadas para tornar o código mais legível e manutenível.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!