se resumir fica mais curto e mais legível, desta forma!
se resumir fica mais curto e mais legível, desta forma!
using Alura.Adopet.Console.Modelos;
namespace Alura.Adopet.Console.Util
{
public static class PetAPartirDoCsv
{
public static Pet ConverteDoTexto(this string? linha)
{
string[]? propriedades = linha?.Split(';') ?? throw new ArgumentNullException("Texto não pode ser nulo!");
if (string.IsNullOrEmpty(linha))
throw new ArgumentException("Texto não pode ser vazio!");
if (propriedades.Length != 3)
throw new ArgumentException("Texto inválido!");
if (!Guid.TryParse(propriedades[0], out Guid petId))
throw new ArgumentException("GUID inválido");
if (!int.TryParse(propriedades[2], out int tipoPet) || (tipoPet != 0 && tipoPet != 1))
throw new ArgumentException("Tipo de Pet inválido!");
return new Pet(petId, propriedades[1], tipoPet == 0 ? TipoPet.Gato : TipoPet.Cachorro);
}
}
}
Olá, Willian. Tudo bem?
Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.
Ficou ótima a forma como você organizou a validação no método ConverteDoTexto
. A sequência de verificações torna o código mais claro e evita erros futuros — isso mostra atenção aos detalhes e às boas práticas que o curso propõe.
Uma dica interessante para o futuro é usar a interpolação de string com string.IsNullOrWhiteSpace
para deixar a verificação de vazio mais completa. Veja este exemplo:
if (string.IsNullOrWhiteSpace(linha))
throw new ArgumentException("Texto nao pode estar em branco.");
Esse código verifica se a string é nula, vazia ou composta apenas por espaços.