1
resposta

Como determinar o "artista" que vai ser passado como parâmetro?

Para determinar o artista que seria passado como parâmetro para os métodos Deletar e Atualizar, eu utilizei a seguinte estratégia.

var artista = artistaDal.Listar().FirstOrDefault(x => x.Nome == "nome do artista");

Aparece um aviso de possível valor nulo, pois obviamente, pode ser que o nome pesquisado não esteja na coleção. Há algum problema de utilizar o método "Listar()" desta forma? Qual a melhor forma de "testar" a funcionalidade no program.cs?

1 resposta

Olá, Pedro.

Tudo bem?

O aviso de possível valor nulo é importante, pois ajuda a evitar exceções no seu código.

Não há problema em utilizar o método Listar() dessa forma, mas é sempre bom ter em mente que ele pode retornar uma coleção vazia, resultando em null quando você usa FirstOrDefault.

Para evitar problemas com valores nulos, você pode adicionar uma verificação logo após a busca. Por exemplo:

var artista = artistaDal.Listar().FirstOrDefault(x => x.Nome == "nome do artista");
if (artista == null)
{
    Console.WriteLine("Artista não encontrado.");
    // Trate o caso de não encontrar o artista, talvez retornando ou lançando uma exceção
}
else
{
    // Continue com a lógica de atualização ou deleção
}

Para testar a funcionalidade no Program.cs, você pode criar um método de teste que chama os métodos Atualizar e Deletar com parâmetros específicos. Aqui está um exemplo de como você pode fazer isso:

static void Main(string[] args)
{
    var artistaDal = new ArtistaDal(); // Supondo que você tenha uma classe ArtistaDal
    
    // Teste para Atualizar
    var artistaParaAtualizar = artistaDal.Listar().FirstOrDefault(x => x.Nome == "nome do artista");
    if (artistaParaAtualizar != null)
    {
        artistaParaAtualizar.Nome = "Novo Nome";
        artistaParaAtualizar.Bio = "Nova Bio";
        artistaDal.Atualizar(artistaParaAtualizar);
        Console.WriteLine("Artista atualizado com sucesso.");
    }
    else
    {
        Console.WriteLine("Artista não encontrado para atualização.");
    }

    // Teste para Deletar
    var artistaParaDeletar = artistaDal.Listar().FirstOrDefault(x => x.Nome == "nome do artista");
    if (artistaParaDeletar != null)
    {
        artistaDal.Deletar(artistaParaDeletar);
        Console.WriteLine("Artista deletado com sucesso.");
    }
    else
    {
        Console.WriteLine("Artista não encontrado para deleção.");
    }
}

Dessa forma, você garante que seu código está preparado para lidar com situações em que o artista não é encontrado, evitando possíveis exceções e melhorando a robustez do seu programa.

Veja se faz sentido, testa se possível.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.