1
resposta

Método buscaPorSimilaridade

Estava pensando em como fazer para além de poder consultar pelo nome do produto consultar também pelo ID. Exemplo: Ao consultar no navegador a URI: http://localhost:8080/gerenciador/busca?filtro=1 deveria ser exibido

Resultado da busca: 1: Doceria Bela Vista

Cheguei ao código abaixo que parece funcionar, mas gostaria de saber se é uma boa opção de código, caso contrário quais são as desvantagens e alternativas:

public Collection<Empresa> buscaPorSimilaridade(String nome) {
        if (nome == null)
            return EMPRESAS.values();

        List<Empresa> similares = new ArrayList<>();
        for (Empresa empresa : EMPRESAS.values()) {
            if (empresa.getNome().toLowerCase().contains(nome.toLowerCase()) || Long.toString(empresa.getId()).contains(nome))
                similares.add(empresa);
        }
        return similares;
    }

Sou iniciante em desenvolvimento e muitas vezes fico preocupado em saber se além do código estar funcionando, se está bem estruturado, se não estou escrevendo nenhuma maluquice que "por sorte" funciona. Acho bacada também debater e aprender outras formas de solução, com os prós e contras de cada situação.

1 resposta

Oi Henrique,

Essa classe EMPRESAS, é uma enum? Ou é a chamada para o método no seu dao? Caso seja a chamada para o seu dao, o melhor que vc altere o método para fazer uma busca usando, por exemplo, um like. Que aí vc delega a busca para o banco de dados, que vai executá-la de forma mais rápida que seu for. Se vc deixa a busca dentro da sua aplicação, vc na verdade busca 2x. Uma no banco de dados e outra dentro da sua app :).