1
resposta

[Bug] Alterado a regra lógica na refatoração

O código de exemplo tem erro de sintaxe como também muda a lógica da regra aplicada, a regra inicial permite que o resultado da divisão seja 0, mas não permite a divisão por 0, com a alteração não é mais permitido receber resultado 0 na divisão. Também o código tem um erro de sintaxe com 2 mains e uma variável inexistente.

Antes

Depois

1 resposta

Olá Jhonny! Bom dia.

Vamos abordar as questões levantadas no seu código:

  1. Erro de Sintaxe com Dois Mains: Certifique-se de que há apenas um método Main no seu projeto. Se houver mais de uma classe com Main, o compilador não saberá qual executar.

  2. Variável Inexistente: Verifique se todas as variáveis usadas estão corretamente declaradas e inicializadas.

  3. Regra Lógica Alterada: Parece que a lógica de permitir que o resultado da divisão seja 0 foi alterada. Vamos garantir que a divisão por zero seja tratada, mas que um resultado de 0 seja permitido.

Para melhorar a legibilidade do código, podemos extrair as operações para métodos separados. Aqui está como você pode fazer isso:

using System;

namespace Operacoes
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Digite o primeiro número: ");
            int numero1 = int.Parse(Console.ReadLine());

            Console.WriteLine("Digite o segundo número: ");
            int numero2 = int.Parse(Console.ReadLine());

            Console.WriteLine("A soma é: " + Somar(numero1, numero2));
            Console.WriteLine("A subtração é: " + Subtrair(numero1, numero2));
            Console.WriteLine("A multiplicação é: " + Multiplicar(numero1, numero2));
            Console.WriteLine("A divisão é: " + Dividir(numero1, numero2));

            Console.ReadLine();
        }

        static int Somar(int a, int b)
        {
            return a + b;
        }

        static int Subtrair(int a, int b)
        {
            return a - b;
        }

        static int Multiplicar(int a, int b)
        {
            return a * b;
        }

        static string Dividir(int a, int b)
        {
            if (b != 0)
            {
                return ((double)a / b).ToString();
            }
            else
            {
                return "Não é possível dividir por zero.";
            }
        }
    }
}

Com essas alterações, o código fica mais modular e legível, e a lógica de não permitir divisão por zero é mantida. Espero ter ajudado e bons estudos!