image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Adrián Scalia
Adrián Scalia05/12/2023 09:25
Compartilhe

Parei de Usar IF e ELSE EM TUDO!!

  • #Java

Você! sim Você que usa IF o tempo tudo... sabe que existe uma maneira escalável e melhor de fazer essas coisas.

Uns caras doidones como vc e eu ficarão pensando que as vocês o código fica uma porqueira se passa para outros. kkk só brincando, o desenho de projeto strategy visa em resolver justamente esse problema, os caras pensarão uma forma que se se aplica no código melhora sua capacidade de trabalho em equipe...

Mas o que é Strategy?

E muito comum no java ou c# e pode ser usado em situações em que o seu código terá muitas condições, gerando uma corrente de IFs.

E como faço para aplicar?

Imagine que existe um objeto Funcionario com suas propriedades e uma classe CalcurarSalario que realiza o reajuste salarial deste funcionário de acordo com sua performance durante o ano.

Imagem na Capa.^*

Class CalcurarSalario()

{

public void reajustarSalario(Funcionario funcionario)

{

Double reajuste = null;

if(funcionario.getPerformance().equals(Performance.Negativa))

{

reajuste = 0d;

} else if(funcionario.getPerformance().equals(Performance.Positiva))

{

reajuste = 0d;

}

if(reajuste == null)

{

throw new RuntimeExeption("Tipo de perfonmance não implementada");

}

Double salarioAntigo = funcionario.getSalario();

funcionario.setSalario(salarioAntigo + (salarioAntigo * reajuste));

}

}

Atá aqui vc me fala Funciona esta optimo o codigo..... masss o que acontece sim :

Porém, uma semana após a implementação, vamos supor que o time solicitou a criação de um novo tipo de performance: EXCELENTE.

vc acresentaria um else if ne:

else if(funcionario.getPerformance().equals(Performance.Positiva))....

Claro sendo 3 não tem problema, imagina 200 if ou 50, já tem um problema para debugar e reajustar os %, modificar os nomes

A forma que nosso queridão resolveria seria assim:

enum Performance

{

Negativa,

Positiva,

Excelente,

Podendo acrescentar muitas mas ou tirar....

}

agora vamos por o método dentro de cada....

enum Performance

{

Negativa

{

public Double reajustarSalario()

{

return 0d

}

}

,

Positiva

{

public Double reajustarSalario()

{

return 0.05d

}

}

,

Excelente

{

public Double reajustarSalario()

{

return 0.10d

}

}

public abstract Double retornaReajusteSalario();

}

Agora nosso codigo ficaria assim:

Class CalcurarSalario()

{

public void reajustarSalario(Funcionario funcionario)

{

Double reajuste = funcionario.getPerformance().retornaReajusteSalario();

Double salarioAntigo = funcionario.getSalario();

funcionario.setSalario(salarioAntigo + (salarioAntigo * reajuste));

}

}

De essa forma podemos acrescentar muitos campos e modificação que alterará a class mas a interface, eliminando fila de If.

Podendo ser melhor trabalhado por o seguinte programador a vir com só olhar o codigo fica mais limpo.

Espero que deixe de fazer essas fileiras de iffffff, Muito obrigado pela tua leitura! Desculpa as faltas de ortografia sou Argentino.

Compartilhe
Recomendados para você
Deal - Spring Boot e Angular (17+)
Cognizant - Arquitetura com Spring Boot e Cloud
Claro - Java com Spring Boot
Comentários (0)