programação 27 Mar 2007 08:28 am

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 ?

2 Responses to “Operador ternário versus IF”

  1. on 29 Oct 2009 at 7:38 am 1.Jorge said …

    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. on 04 Dec 2009 at 11:21 am 2.Jadson Santos said …

    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.

Trackback This Post | Subscribe to the comments through RSS Feed

Leave a Reply