1
resposta

Codigo escrito diferente

Esse codigo estaria correto? (compila)

using System;

class Programa
{
    static void Main(String[] args)
    {
        double salario = 3300.0;

        if (salario <= 1900.0)
        {
            Console.WriteLine("Fora do calculo");
        }
        else
        {
            if (salario <= 2800.01)
            {
                Console.WriteLine("Reduz valor de $142");
            }
            if (salario <= 3751.01)
            {
                Console.WriteLine("Reduz valor $350");
            }
            else
            {
                Console.WriteLine("Reduz valor de $636");
            }
        }
    }
}

Obrigada!

1 resposta

Janaina,

Está certo, sim, quando funciona SEMPRE está certo, tipo aquele piloto de avião que deu uma "barrigada" na pista e o co-piloto disse:

  • Toda a aterrisagem que saímos vivos é uma boa aterrisagem!

... okay, mas existe algo chamado "boas práticas".

A concatenação está bem ruinzinha. Motivo: É difícil de fazer manutenção, ficou um pouco "macarronada" para que outro programador entenda o que você quis dizer. Tem um "if" e depois um "if" dentro de outro "if" que te dois "if", um com "else"... estranho...

Vou exemplificar.

1º CASO:

using System;

class Program
{
    static void Main(string[] args)
    {
        double salario = 3300.0;

        if (salario <= 1900.0)
        {
            Console.WriteLine("Fora do calculo");
        }
        else if (salario <= 2800.01)
        {
            Console.WriteLine("Reduz valor de $142");
        }
        else if (salario <= 3751.01)
        {
            Console.WriteLine("Reduz valor $350");
        }
        else
        {
            Console.WriteLine("Reduz valor de $636");
        }
    }
}

Agora seja sincera, visualmente falando ficou melhor de entender ou não?

2º CASO:

using System;

static void Main(string[] args)
{
    double salario = 3300.0;

    switch (salario)
    {
        case <= 1900.0:
            Console.WriteLine("Fora do calculo");
            break;
        case <= 2800.01:
            Console.WriteLine("Reduz valor de $142");
            break;
        case <= 3751.01:
            Console.WriteLine("Reduz valor $350");
            break;
        default:
            Console.WriteLine("Reduz valor de $636");
            break;
    }
}

E usando "switch" ao invés de "if"? O código não fica mais "limpo"?

Veja também:

Sempre leia José Carlos Macoratti

==========================================================

C# - Boas Práticas : Aprendendo com maus exemplos - I

Criando o projeto exemplo : uma classe que cheira mal

https://macoratti.net/16/08/c_bpme1.htm

==========================================================

[]'s,

Fabio I.