1
resposta

[Sugestão] Verificação de existência prévia de Gênero no BD

Na aula 05, "Salvando música com gênero", o professor usa o seguinte código:

private static ICollection<Genero> GeneroRequestConverter(ICollection<GeneroRequest> generos, DAL<Genero> dalGenero)
{
   var listaDeGeneros = new List<Genero>();
    foreach (var item in generos)
    {
        var entity = RequestToEntity(item);
        var genero = dalGenero.RecuperarPor(g=>g.Nome.ToUpper().Equals(item.Nome.ToUpper()));
        if (genero is not null)
        {
            listaDeGeneros.Add(genero);
        }
        else
        {
            listaDeGeneros.Add(entity);
        }
    }

    return listaDeGeneros;
}

A utilização dessa verificação se o gênero não é nulo, se torna desnecessária, na minha opnião. Entendo que ele pode ter aproveitado o contexto para explicar o tracking do EF, mas acho que ele poderia ter usado outra situação para abordar esse conceito, e simplificar essa lógica.

Como o objetivo aqui é que gêneros que já existam não sejam adicionandos novamente ao banco, podemos apenas verificar se o gênero buscado é nulo, e, apenas se ele for, adicionamos ele na lista final que será retornada. Deixando a lógica mais simples e objetiva, e reduzindo linhas de código:

private static ICollection<Genero> GeneroRequestConverter(ICollection<GeneroRequest> generos, DAL<Genero> DALGenero)
{
    var listaGeneros = new List<Genero>();
    foreach (var item in generos)
    {
        var genero = DALGenero.RecuperarPor(g => g.Nome!.ToUpper().Equals(item.Nome.ToUpper()));

        if (genero is null) listaGeneros.Add(RequestToEntity(item));
    }

    return listaGeneros;
}
1 resposta

Olá, David. Tudo bem?

Você levantou um ponto interessante sobre a simplificação do código no método GeneroRequestConverter(). A sua sugestão de verificar apenas se o gênero é nulo e, caso seja, adicionar a entidade à lista, realmente torna o código mais direto e pode ser mais fácil de entender.

A lógica que o professor apresentou parece estar focada em demonstrar o conceito de tracking do Entity Framework, mas, como você mencionou, para o objetivo específico de evitar a duplicação de gêneros, a sua é uma ótima abordagem.

Sua versão elimina a necessidade de adicionar o gênero existente à lista, já que ele já está presente no banco de dados, simplificando assim a lógica e reduzindo o número de linhas de código.

É sempre bom ver quando os alunos se sentem à vontade para sugerir melhorias e otimizações no código. Isso mostra um bom entendimento dos conceitos e uma busca por práticas de codificação.

  Alura   Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!