Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se
Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Case da vida real

Recentemente no meu trabalho encontrei uma situação onde eu recebia 5 lista diferentes vindas de um resultado de banco de dados e aonde eu tinha que percorrer ambas e fazendo validações para montar uma unica lista para então passar para o metodo de insert na base de dados. por diversas vezes me questionei qual padrão de projetos se encaixaria melhor para retirar aqueles for e if em sequencia e ainda persiste essa duvida.

exemplo aleatorio abaixo :

public  List<Ordem>  checkElegiveis (listCnpj, listCredenciadoras, listaPagamentos, listPedidos) {
for(Pedidos o : lispedidos){
    if(o.getNumeroPedido != null &&  o.getNumeroPedido > 5) {
    for ( Document d : listcnpj ) {
        if    ( d.getCnpj.legth() >= 11 ) {

// continua lendo as listas e no final adiciona na lista 
    }
}

minha solução foi, criar uma classe que ficasse responsável por ter apenas metodos de checagem de regras. os if eu fiz os if virarem metodos por exemplo

public boolean checkNumberOrdem ( Pedidos o ) {
 return  o.getNumeroPedido != null &&  o.getNumeroPedido > 5) {

}

O código está errado mas e apenas para exemplo, mas tentei desacoplar o maximo possível separando em metodos e por serem tipos de lista diferentes eu nao vi a possibilidade e colocar o strategy, observe por exemplo. Talvez um chain of responbility mas como a cada if eu precisaria de um resultado para seguir adiante e no final adicionar a lista eu nao encontrei uma forma em que o polimorfismo pudesse me ajudar neste caso.

1 resposta
solução!

Oi Francisco,

Esse é um caso bem específico do seu projeto, e para te ajudar eu precisaria entender bem o objetivo dessa funcionalidade, e também ver o código completo dessa lógica, para pensar em como melhorar utilizando algum padrão.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software