POLA - Princípio da Menor Surpresa

20 de set de 2012 - Paulo Dias


O POLA ou Princípio da Menor Surpresa é um principio que busca evitar que o usuário seja surpreendido por um retorno não esperado. A idéia básica do POLA é a previsibilidade. Nesse post vou mostrar alguns exemplos de códigos java, que vão contra esse principio, não vou colocar o resultado, a idéia é que você tente imaginar a resposta e depois teste, ok?

Veja esse código, qual a saída dele?

 
        Integer a = 1;        
        int b = 1;
        Integer c = 1;        

        System.out.println(a == b); 
        System.out.println(b == c); 
        System.out.println(a == c); 
    
e se for somado 999 nas três variáveis o resultado das comparações é o mesmo? O que você acha?
 
        a += 999;        
        b += 999;
        c += 999;        

        System.out.println(a == b); 
        System.out.println(b == c); 
        System.out.println(a == c); 
    


No próximo código temos duas variáveis com a string "paulo". O que é retornado quando comparamos as duas com o operador de igualdade(==) ? E se a comparação fosse feita com as strings em maiúsculas? O resultado é o mesmo? Têm certeza?

OBS. O certo é usar o método .equals para comparar strings


        String a = "paulo";
        String b = "paulo";
        
        System.out.println(a == b);       
        System.out.println(a.toUpperCase() == b.toUpperCase());
        


Agora veja esse código, ele não compila e nem deveria, não é?


       float f = 2f;
        
       int i = 0;
        
       i = i + f;
       
mas e esse, será que compila?

       float f = 2f;
        
       int i = 0;
        
       i += f;
               


Por ultimo qual o resultado de 0.1 + 0.1 + 0.1 ? simples né? será?


       System.out.println( 0.1 + 0.1 + 0.1 );
               

Mais sobre Princípios de Projetos Orientados a Objetos:
http://ferhenriquef.com
http://www.henriqueavila.com.br

Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter