IF X Case (Coitado do nosso querido IF)

 

Hoje vamos mostrar como a estrutura case é mais produtiva do que o bom e velho if, vamos construir um método para qualificar um número de acordo com os dados abaixo:

  • Número Bom quando for igual a 2,5 ou 7
  • Número Ruim quando for igual a 1,3,8,9 ou 10
  • Número Péssimo quando o número for menor que 1
  • Número Muito Bom quando o número for igual a 4,6 ou maior que 10
  • Número Excelente quando o número for maior ou igual que 20 e menor que 100
  • Se diferente de todas acima, número é inválido

 

Function RetornarClassificacao(byval variavel As Int32) As String

  Dim Classificacao As String

        If (variavel = 2) OrElse (variavel = 5) OrElse (variavel = 7) Then

            Classificacao = "Número Bom"

        ElseIf (variavel = 1) OrElse (variavel = 3) OrElse ((variavel >= 8) AndAlso (variavel <= 10)) Then

            Classificacao = "Número Ruim"

        ElseIf (variavel < 1) Then

            Classificacao = "Número Péssimo"

        ElseIf (variavel = 4) OrElse (variavel = 6) OrElse ((variavel > 10) AndAlso (variavel < 20)) Then

            Classificacao = "Número Muito Bom"

        ElseIf (variavel >= 20) AndAlso (variavel < 100) Then

            Classificacao = "Número Excelente"

        Else

            Classificacao = "Número inválido"

        End If

return Classificacao

End Function

Agora veja como o código fica bem mais legivel e fácil utilizando o Case, se nosso código fica bem melhor nesse caso simples, imagine com códigos mais complexos

 

Function RetornarClassificacao(byval variavel As Int32) As String

Dim variavel As Int32 = txtResultado.Text

        Dim Classificacao As String

 

        Select Case variavel

            Case 2, 5, 7

                Classificacao = "Número Bom"

            Case 1, 3, 8 To 10

                Classificacao = "Número Ruim"

            Case Is < 1

                Classificacao = "Número Péssimo"

            Case 4, 6, 11 To 19

                Classificacao = "Número Muito Bom"

 

            Case 20 To 99

                Classificacao = "Número Excelente"

            Case Else

                Classificacao = "Número inválido"

        End Select

return Classificacao

End Function

 

O  código com if requer uns 10 a 20 segundos para ser totalmente entendido, já o case dúvido que tenha demorado mais de 5 segundos para saber o que está sendo feito, a  utilização do 11 to 19 para identificar uma sequência é fantastico e a virgula para as varias condições então nem se fala…

É claro que o poderoso Case tinha que ter um defeito, esse defeito é que ele só compara uma variavel,ou seja, se tivesse uma comparação do tipo a =1 e b = 2 , não conseguiria fazer essas duas comparações com o case, precisaria usar o IF a não ser que criasse alguma "solução avançada" para contornar isso.

 

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s