1
resposta

[Dúvida] Diferença entre if dentro de um else e o uso do else if

Olá, nesta aula me surgiu uma duvida quanto ao uso do else e if

Existe alguma diferença relacionada a compilação, execução ou boas práticas, em usar alguma das estruturas abaixo? Qual a mais indicada, caso não haja diferenças entre elas?

Como visto na aula:

if (condição) 
{
    retorno
}
else 
{
    if (condicao)
    {
        retorno
    }
    else
    {
    retorno
    }
}

Ou

if(condição)
{
    retorno
}
else if(condição)
{
    retorno
}
else
{
    retorno
}
1 resposta

Luiz,

Boa pergunta! Eu fui pesquisar para não falar besteira e achei um comentário muito interessante:

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

Qual a diferença entre else e elseif?

O else não tem condição a verificar e é usado no final/depois de uma série de if / elseif, como "caso geral".

O elseif, à semelhança do if, usa-se em casos onde é necessário verificar a autenticidade de uma condição. Assim em vez de multiplos if, usa-se n elseif, e no final o caso geral dentro do else.

https://pt.stackoverflow.com/questions/57791/qual-a-diferen%C3%A7a-entre-else-e-elseif

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

Então eu penso assim:

  • Se você usar um IF dentro de um ELSE, estará ISOLANDO um caso no IF, pois o ELSE deste NÃO faz verificação e depois você monta um outro conjunto de verificações. Pode ser últi em casos bastante específicos.

Quanto as "boas práticas", eu estou fazendo agora uma formação completa sobre o assunto, até gostaria de fazer mais formações avançadas assim... recomendo:

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

Boas práticas em C#

Aprenda como aplicar boas práticas como SOLID, refatoração e design patterns em C#.

https://cursos.alura.com.br/formacao-boas-praticas-c-sharp

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

Mas para responder sua pergunta este LINK do José Carlos Macoratti foca direto no caso do "IF", por favor, leia:

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

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

...

Criando o projeto exemplo : uma classe que cheira mal

Então veja o código da classe abaixo, e, tente entender qual o propósito dessa classe:

class Class1
{
    public decimal Calcular(decimal valor, int tipo, int anos)
    {
        decimal resultado = 0;
        decimal desc = (anos > 5) ? (decimal)5 / 100 : (decimal)anos / 100;
        if (tipo == 1)
        {
            resultado = valor;
        }
        else if (tipo == 2)
        {
            resultado = (valor - (0.1m * valor)) - desc * (valor - (0.1m * valor));
        }
        else if (tipo == 3)
        {
            resultado = (0.7m * valor) - desc * (0.7m * valor);
        }
        else if (tipo == 4)
        {
            resultado = (valor - (0.5m * valor)) - desc * (valor - (0.5m * valor));
        }
        return resultado;
    }
}

Esse é um tipo de código que estraga o dia de qualquer bom desenvolvedor.

... CONTINUA ...

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

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

Como eu trabalhei com MUITO código "macarronada" na minha vida profissional eu não acho tão problemático, mas o CORRETO é evitar muitos "IFs" aninhados ou concatenados para que o código fique mais limpo (fácil de ler e fazer manutenção).

[]'S,

Fabio I.