2
respostas

Desafio - Exercio 4: soma de inteiros

Gostaria de saber a opinião ou sugestão

//Criar um programa que calcula a soma de todos os elementos inteiros em uma lista.
List<int> ListaDeNumeros = new List<int>();
int total = 0;
void CalculaSomaDosNumero()
{
    Console.Write("Digite os numeros inteiros: ");
    string elemento = Console.ReadLine()!;
    int ElementoNumerico = int.Parse(elemento);
    ListaDeNumeros.Add(ElementoNumerico);
    total += ElementoNumerico;
    foreach (int elementos in ListaDeNumeros)
    {
        Console.WriteLine($"{elementos}");
    }
    Console.WriteLine($"Total da soma dos elementos:{total}");
    PerguntaAoUsuario();
}

void PerguntaAoUsuario(){
Console.WriteLine("Deseja Continuar? s/n");
string escolha = Console.ReadLine()!;
    switch (escolha)
    {
        case "s":
            Console.Clear();
            CalculaSomaDosNumero();
            break;
        case "n":
            Console.Clear();
            Console.WriteLine("Tchau");
            break;
        default:
            Console.WriteLine("Digite 's'(Sim) ou 'n'(Não)");
            Thread.Sleep(3000);
            PerguntaAoUsuario();
            break;
    }
}
CalculaSomaDosNumero();
2 respostas

Achei o código bem legal no geral, mas notei alguns pontos que podem ser melhorados:

Uso do default no switch: ele chama a função PerguntaAoUsuario() novamente, sendo que essa função está fazendo a pergunta novamente. Isso acaba fazendo a pegunta duas vezes de forma desnecessaria.

Nome da função no plural: CalculaSomaDosNumero() está no plural (“números”), mas na verdade só é digitado um número por vez. Pode confundir um pouco.

Falta de verificação de null: Console.ReadLine() pode sim retornar null, dependendo do contexto (tipo se for entrada redirecionada ou chegar no fim do input). No código foi usado Console.ReadLine()!, que é o operador de "confiança" (!), basicamente dizendo ao compilador: "relaxa, isso nunca vai ser null". Só que isso tira o warning, mas não evita que o programa quebre se realmente for null. O ideal seria checar antes de usar.

No geral ficou muito bom, parabéns, só fique atenta nesse ponto do !, pois isso ainda pode quebrar o codigo, seria interressante validar se esse resultado veio null ou mesmo utilizar um int.TryParse()

Obrigado, pelas dicas tentarei coloca-las em pratica