Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida Exercício Refatorando a classe Veiculo

Boa tarde. Eu resolvi o problema da seguinte maneira e gostaria de saber se está correta:

Primeiramente, apliquei o TDD e criei o seguinte teste na classe VeiculoTeste:

public void TestaObterInformacoesDoVeiculo()
{
    //Arrange
    Veiculo veiculo = new();
    veiculo.Proprietario = "João Carlos";
    veiculo.Placa = "TXT-6574";
    veiculo.Cor = "Azul";
    veiculo.Modelo = "Virtus";
    
    //Act
    string informacoesDoVeiculo = veiculo.ObterInformacoesDoVeiculo(veiculo);
    
    //Assert
    Assert.Contains("Informações do Veículo", informacoesDoVeiculo);
}

Logo após implementei o método ObterInformacoesDoVeiculo na classe Veiculo, da seguinte forma:

public string ObterInformacoesDoVeiculo(Veiculo veiculo) =>
    $"Informações do Veículo:\n" +
    $"Modelo: {(veiculo.Modelo ?? "Informação indisponível")}" +
    $"Cor: {(veiculo.Cor ?? "Informação indisponível")}" +
    $"Placa: {(veiculo.Placa ?? "Informação indisponível")}" +
    $"Tipo de Veículo: {(Tipo == TipoVeiculo.Automovel ? "Automóvel" : "Motocicleta")}";

O teste foi aprovado no gerenciador de testes, mas ainda assim gostaria de saber se há alguma dica de melhora ou mudança de código necessária.

Desde já, agradeço.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas
solução!

E aí, Nestor!

Pelas suas paradas, parece que tá mandando bem! Curto demais que tu seguiu a parada do TDD, primeiro fazendo o teste e depois a implementação, muito massa.

Sobre teu código, o método ObterInformacoesDoVeiculo ta de boa. Ele solta as infos do veículo e, se algo não tiver na área, manda a mensagem "Informação indisponível", que é uma jogada esperta.

Mas tenho uma ideia maneira pra tu. Seu método ObterInformacoesDoVeiculo tá pegando um veículo como parada, mas como já é um método da classe Veiculo, já dá pra acessar os atributos do veículo sem precisar passar como parâmetro. Dá uma olhada nesse esquema:

public string ObterInformacoesDoVeiculo() =>
    $"Informações do Veículo:\n" +
    $"Modelo: {(Modelo ?? "Informação indisponível")}" +
    $"Cor: {(Cor ?? "Informação indisponível")}" +
    $"Placa: {(Placa ?? "Informação indisponível")}" +
    $"Tipo de Veículo: {(Tipo == TipoVeiculo.Automovel ? "Automóvel" : "Motocicleta")}";

E no teste, tu chamaria o método assim:

string informacoesDoVeiculo = veiculo.ObterInformacoesDoVeiculo();

Espero que essa parada ajude nos teus estudos! Abração!

Muito obrigado pelas dicas!