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.