3
respostas

[Dúvida] Gostaria de uma opinião sobre meu tratamento em Parse

 public static Avaliacao Parse(string text) 
    {    
            int nota = int.Parse(text);
        if (nota >= 0 && nota <= 10)
            return new Avaliacao(nota);
        else
        {
            Console.Clear();
            Console.WriteLine("O valor de nota é de 0 a 10");
            Console.Write("Tente novamente:");
            return Avaliacao.Parse(Console.ReadLine()!);
        }
    }
3 respostas

Olá, Pedro! Como vai?

Você está utilizando o método int.Parse para converter o texto em um número inteiro. Caso a conversão seja bem-sucedida e o número esteja dentro do intervalo de 0 a 10, você retorna uma nova instância da classe Avaliacao com a nota informada.

No entanto, caso a nota esteja fora do intervalo, você está limpando a tela do console, exibindo uma mensagem de erro e solicitando ao usuário que tente novamente. Nesse caso, você está chamando o próprio método Parse, mas utilizando o método Console.ReadLine para obter uma nova entrada do usuário.

Uma sugestão que posso dar é adicionar uma condição de parada caso o usuário erre a nota várias vezes, para evitar um possível loop infinito. Algo como um contador de tentativas, por exemplo.

Além disso, você poderia considerar utilizar o método int.TryParse ao invés de int.Parse, pois o TryParse retorna um valor booleano indicando se a conversão foi bem-sucedida ou não, evitando assim uma exceção caso o texto não seja um número válido.

No geral, seu tratamento parece estar correto, mas lembre-se sempre de testar seu código com diferentes cenários para garantir que ele está se comportando como o esperado.

Espero ter ajudado e bons estudos!

Po pedro a soluçao ficou muito boa eu particularmente gostei muito minha duvida era algo similar se existia algum meio para colocar em texto nao havia pensado nessa forma que descreveu não cogitei o uso do && agradeço seu post ;)

Vlw Gabriel, muito bom saber que foi útil pra vc :D