Normalmente pensamos em construir uma estrutura do tipo If...Then...Else.
Se o conjunto de possibilidades for relativamente pequena, a abordagem acima é de fácil implantação e interpretação, mas à medida que aumentam os testes, a estrutura tende a ficar mais complexa.
Tomemos o seguinte exemplo: Construir uma função que estabeleça o status do fornecedor com base na nota obtida numa auditoria de qualidade, com base nos seguintes critérios:
- Se a nota for menor que 30, o fornecedor deve ser "desqualificado"
- Se a nota estiver entre 30 e 40, "situação crítica"
- Se a nota estiver entre 40 e 50, "estado de alerta"
- Se a nota estiver entre 50 e 60, "sob monitoramento"
- Se a nota estiver entre 60 e 70, "aceitável"
- Se a nota estiver entre 70 e 80, "bom"
- Se a nota estiver entre 80 e 90, "muito excelente"
- Se a for superior a 90, "excelente".
Vejamos como ficaria o código, utilizando a estrutura If Then ElseIf.
Function StatusNotaV1nota)
If nota < 30 Then
StatusNotaV1 = "desqualificado"
ElseIf nota >= 30 And nota < 40 Then
StatusNotaV1 = "situação crítica"
ElseIf nota >= 40 And nota < 50 Then
StatusNotaV1 = "estado de alerta"
ElseIf nota >= 50 And nota < 60 Then
StatusNotaV1 = "sob monitoramento"
ElseIf nota >= 60 And nota < 70 Then
StatusNotaV1 = "aceitável"
ElseIf nota >= 70 And nota < 80 Then
StatusNotaV1 = "bom"
ElseIf nota >= 80 And nota < 90 Then
StatusNotaV1 = "muito bom"
ElseIf nota >= 50 And nota < 60 Then
StatusNotaV1 = "excelente"
End If
End Function
O código acima é completamente funcional, mas acho-o meio poluído.
Vejamos como fica o mesmo código, utilizando o comando Select Case
Function StatusNotaV2(nota)
Select Case nota
Case Is < 30
StatusNotaV2 = "desqualificado"
Case 30 To 39
StatusNotaV2 = "situação crítica"
Case 40 To 50
StatusNotaV2 = "estado de alerta"
Case 50 To 60
StatusNotaV2 = "sob monitoramento"
Case 60 To 70
StatusNotaV2 = "aceitável"
Case 70 To 80
StatusNotaV2 = "bom"
Case 80 To 90
StatusNotaV2 = "muito bom"
Case Is > 90
StatusNotaV2 = "excelente"
End Select
End Function
O resultado é o mesmo, mas com uma estrutura mais clean.
[ ]s
0 comentários:
Postar um comentário