1
resposta

Melhor forma de criar a lógica para editar o projeto

Antes de assistir a parte que fala sobre criar a lógica para fazer a edição de um projeto eu tentei fazer sozinho. Fiz da seguinte forma:

EDITA_PROJETO(state, projeto: IProjeto) {
      state.projetos.map((item) => {
        if (item.id == projeto.id) item.nome = projeto.nome;
      });
    },

Após assistir a aula vi que o instrutor fez da seguinte forma(desconsiderar nomes de variáveis diferentes):

    EDITA_PROJETO(state, projeto: IProjeto) {
      const index = state.projetos.findIndex((item) => item.id == projeto.id);
      state.projetos[index] = projeto;
    },

Gostaria de saber se tem diferença entre as duas formas, na questão de desempenho, padrão de desenvolvimento ou algo do gênero.

1 resposta

Salve, Antônio!

Na verdade, usar o map neste caso seria um antipadrão.

O map é utilizado para gerar um novo array, processando individualmente cada um dos elementos do original. Para percorrer os elementos e modificar um elemento condicionalmente, eu recomendaria o forEach.

Sobre a forma que fizemos no curso, eu acredito que usar o findIndex é uma forma mais limpa de se escrever esse algorítimo. Hoje, só queremos mudar o nome do projeto. Mas isso pode facilmente evoluir e termos novas propriedades do projeto, como por exemplo uma data de início, um status dizendo se ele foi finalizado... assim, ao substituirmos o projeto inteiro, já temos todos os campos atualizados.