2
respostas

[Sugestão] Minha maneira de passar o artista para o atualizar e o excluir

Olá, pessoal. Achei interessante a maneira que o Pedro fez com o código dele para passar o artista para os métodos Atualizar e Excluir, porém eu fiz dessa forma abaixo. O que vocês acham? Teria uma maneira mais elegante de codar o que eu fiz?

A ideia seria primeiro eu chamar esse método Buscar e depois passar o resultado, como parâmetro, pro atualizar ou excluir. Daria também pra chamar o Buscar de dentro do Atualizar ou Excluir, não sei qual seria a melhor opção...

        public Artista Buscar(string nomeArtistaParaBuscar) 
        {
            using var connection = new Connection().ObterConexao();
            connection.Open();

            string sql = $"SELECT * FROM [ScreenSound].[dbo].[Artistas] where Nome = @nome";
            SqlCommand command = new SqlCommand(sql, connection);

            command.Parameters.AddWithValue("@nome", nomeArtistaParaBuscar);

            using SqlDataReader dataReader = command.ExecuteReader();

            dataReader.Read();
            string nomeArtista = Convert.ToString(dataReader["Nome"]);
            string bioArtista = Convert.ToString(dataReader["Bio"]);
            int idArtista = Convert.ToInt32(dataReader["Id"]);
            Artista artista = new(nomeArtista, bioArtista) { Id = idArtista };

            return artista;
        }
2 respostas

Olá, Felipe, como vai?

A sua abordagem de buscar o artista e depois passá-lo para os métodos de Atualizar e Excluir é uma boa estratégia, especialmente para manter o código mais modular e reutilizável. A ideia de chamar o método Buscar dentro dos métodos Atualizar e Excluir pode funcionar, mas separar a busca em um método à parte facilita a manutenção e o entendimento do código. Além disso, se a busca precisar ser feita de diferentes lugares, ter um método dedicado pode economizar tempo e evitar duplicação de código.

Continue explorando e aprimorando suas abordagens! Se precisar de mais ajuda, o fórum está à disposição.

Deixar "Buscar" num método diferente é melhor para reaproveitar.

Agora por exemplo, o que eu acharia mais legal e costumo fazer, porém é código a mais.

Na situação de deletar, você só precisaria buscar o ID correspondente.

Eu:

public int Buscar(string nomeArtistaParaBuscar)
{
    // código antes
    string sql = $"SELECT Id FROM [ScreenSound].[dbo].[Artistas] where Nome = @nome";
    
    // código
    
    return id;
}

Ou até mesmo, deletar direto sem a busca já que nesse exemplo aparentemente não terá mais de um artista com o mesmo nome:

public void Deletar(string nomeArtistaParaDeletar) 
        {
            using var connection = new Connection().ObterConexao();
            connection.Open();

            string sql = $"DELETE [ScreenSound].[dbo].[Artistas] where Nome = @nome";
            SqlCommand command = new SqlCommand(sql, connection);

            command.Parameters.AddWithValue("@nome", nomeArtistaParaDeletar);

            // executar o comando SQL
        }

Não que um seja certo outro errado, mas queria mostrar algumas formas. Acredito que enriqueça vendo outras possibilidades.