Uma pequena brincadeira com arrays

Vi no blog do Pedro Doria que está aberto para quem quiser a lista de palavras bloqueadas no site da Caixa Econômica Federal. Além de chamar a atenção para o fato de que palavras como estupidez, fenda, furo, japa, e peru serem moderadas (ou seja, nunca envie uma mensagem perguntando sobre financiamento para criações de peru), junto com homossexual, lésbica e suas variações (o que mostra um pouco de preconceito por parte tanto da Caixa como de seus clientes), achei interessante o modo como é feita a implementação da rotina.

No caso é alimentado um array com um número servindo de índice e a palavra censurada e após é passado item por item do array verificando se a string recebida pela função confere, retornando true em caso positivo:

function Moderador(string){ 
             var Palavrao = new Array();
             Palavrao[1]   = 'PALAVRAO1';
             Palavrao[2]   = 'PALAVRAO2';
             Palavrao[3]   = 'PALAVRAO3';

             var QtdPalavroes  = Palavrao.length ;
             var ss = string;
             ss = ss.toUpperCase() ;
             var x; 
             for (i = 1; i < QtdPalavroes ; i++) {
                   procurar = Palavrao[i] ;
                   Existe = ss.indexOf(procurar);
                   if (Existe != -1){                  
                         return true;
                   }
             }
      }

Olha, eu confesso que em termos de otimização eu não sou lá essas coisas, mas é impressão minha ou essa rotina aí não seria muito mais rápida se fosse usada a palavra como índice do array? Assim sendo, só para pegar no pé, resolvi reescrever a função acima:

function Moderador(string){ 
             var Palavrao = new Array();
             Palavrao['PALAVRAO1']   = 1;
             Palavrao['PALAVRAO2']   = 1;
             Palavrao['PALAVRAO3']   = 1;

             var ss = string;
             ss = ss.toUpperCase() ;
             Existe = Palavrao[ss];
             if (Existe == 1){                  
                      return true;
             }
}

Mesmo (creio eu) comendo um pouco mais de memória a gente tem uma solução que fica bem mais elegante, não?

(E caso você não tenha entendido qual é a moral desse post é que na real ele é um teste do Google Code Prettify. Quero ver se daqui pra frente eu escrevo mais códigos por aqui, aproveitando o fato que estou num momento mais nerd da minha vida, lendo bastante livros técnicos…)

This entry was posted in Sem categoria. Bookmark the permalink.

Deixe um comentário