Fabio's blog

“I like nonsense, it wakes up the brain cells. Fantasy is a necessary ingredient in living, it’s a way of looking at life through the wrong end of a telescope. Which is what I do, and that enables you to laugh at life’s realities.” - Dr. Seuss

Operador ternário versus IF

Recentemente retornei a questão de qual é a melhor forma de escrever os seguintes métodos

   if (p==null)  {
        p = v;
   }
    return p;

ou

        return p == null ? v : p;

O code conventions da sun para java no item 10.5.2 recomenda a segunda opção.
Quando fiz a pergunta: “Qual dos 2 códigos é melhor?”, a resposta foi quase unânime que o primeiro código é melhor para se dar manutenção.Eu fiz esta pergunta para recém ingressos na universidade que pouco sabem ou nada sabem sobre programar, para programadores senior ( e bota senior nisso) de outras linguagens (pascal) e para usuários experientes em java.

Após recolher todas as respostas fiquei na dúvida a sun em um manual escrito em 1999 recomenda o código com o operador ternário e todo mundo o segundo código. Entretanto vale uma análise das respostas os usuários experientes em java recomendaram o primeiro código levando em conta programadores sem experiência em java embora eles mesmos não tivessem problema . Finalmente eu tinha uma resposta se sua equipe é formada por programadores certificados SCJP não tem problema. Boa resposta até eu rodar o checkstyle que para minha surpresa usando sun_checks.xml tinha um famigerado “AvoidInlineConditionals” que considera como erro o uso do operador ternário, com a seguinte explicativa: “Alguns desenvolvedores consideram difícil ler , ou sua companhias proíbem o uso.”

Em resumo, hoje me dia eu evito o uso do operador ternário , que eu gosto muito , mas continuo utilizando pois se ele não devesse ser utilizado não existiria na linguagem.

E você o que acha ?

Activity

2 total comments, leave your comment or trackback.
  1. Utilizo o operador ternário e vou continuar utilizando. Acho uma extrema bobagem gastar mais linhas de código pra fazer algo relativamente simples como a atribuição de uma variável. Em softwares que recebem muitas informações de formulários e precisam validar o if ternário é uma mão na roda pois valida em 1 linha, coisa que no if comum teria que usar 4 ou 5 linhas.

  2. Jadson Santos
    Dec 4th 2009

    Apesar de utilizar o operador ternário, acho que em termo de entendimento e manutenção o if é muito melhor.

    Aconselho usá-lo para testes condicionais extremamente simples.


Leave a Reply


Search

The archives run deep. Feel free to search older content using topic keywords.