.NET

21 out, 2010

Tem que usar IF? Então faz na elegância.

Publicidade

Introdução

Muitas vezes nos deparamos com solicitações de clientes desesperados e
geralmente são apenas alguns “reparos”, ou só algumas “coisinhas”
adicionais (na cabeça de um leigo) e com o passar dos anos esta bola de
neve ganha corpo e acaba transformando o código em uma selva de IFs.

No mundo que imaginamos para os nossos projetos qualquer alteração
deveria ser avaliada com cautela ou implementada conforme os padrões já
estabelecidos para o sistema. Mas a triste realidade é que isto
realmente não acontece. A demanda é classificada como pouco impactante e
logo é destinada a um programador Junior pressionado, então ele coloca
um IF ou dois no código (por dia), exibe a tela funcionando
perfeitamente para o gestor que solicita que a alteração seja publicada
em pré-produção, e por fim o cliente executa os testes e fica
satisfeitíssimo com o resultado.

Este artigo não vai lhes ensinar práticas para manter a qualidade do
seu projeto, até porque eu não tenho cancha para falar do assunto. O que
iremos aprender aqui é como incrementar operações ternárias. Elas não
podem substituir todos os cenários onde temos que utilizar IF, mas pelo
menos trará mais elegância ao código através do aumento da sua
legibilidade.

Implementação

Um IF ternário recebe este nome por ser um operador que trabalha com
três operando (Ex.: se ? então : senão) . Trata-se de um operador de
condicional, assim como o IF ELSE. Um IF ternário é dividido da seguinte
maneira:

  • (se) Primeiro operando Expressão booleana (number % 2 == 0)
  • (então) Segundo operando Valor a atribuir caso a expressão
    booleana seja verdadeira.
  • (senão) Terceiro operando Valor a atribuir caso a expressão
    booleana seja falsa.

Vamos criar uma situação para esboçar o uso desta condicional, pode
ser um daqueles sinalizadores que ficam nas portas dos banheiros de
shopping centers (nada haver). Este sinalizador possui um enumerador
composto por quatro estados:

  • ocupado representado pela cor vermelha
  • livre pela verde
  • Interditado pela amarela
  • em limpeza na cor azul;

Para sinalizar a atual situação do banheiro vamos adicionar uma Label
que receberá uma nova cor a cada mudança de estado. Abaixo uma imagem
exemplificando a tela.

Em seguida, um breve comparativo entre uma condicional ternária e uma
no modo convencional. Primeiramente, o IF convencional que já é um
velho conhecido de todos.

Logo abaixo temos uma exemplificação do mesmo IF só que no modo
ternário, repare que a imagem destaca as responsabilidades de cada
operando da condicional ternária.

Como informado anteriormente, o enumerador, que classifica a atual
situação do banheiro, é composto por quatro estados. Agora precisamos
trabalhar em uma condicional um pouco mais estruturada, por isso iremos
incrementar uma condicional usando IF, ELSE e ELSE IF. Como na
explicação anterior, primeiramente o IF convencional.

Em seguida, o mesmo exemplo utilizando IF ternário.

Encerramento

Operações ternárias são tão simples que falta até assunto para o
artigo. Espero que este material ajude os iniciantes e gostaria de
lembrar que condicionais ternárias nem sempre podem substituir um IF
convencional.

Quando estiver trabalhando em algum requisito que lhe exija algum
tipo de classificação de estado (Ex.: Pedidos), não faça como o exemplo.
Nesses casos devemos pensar em uma arquitetura mais elaborada, que nos
traga benefícios sólidos à manutenibilidade do sistema, digo isso,
porque é óbvio que a simples substituição IF por condicionais ternárias
não nos garantirá qualidade.