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…)