image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Adrián Scalia
Adrián Scalia05/12/2023 09:25
Compartilhe
Savegnago - Lógica de ProgramaçãoRecomendados para vocêSavegnago - Lógica de Programação

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ê
NTT DATA - Java e IA para Iniciantes
TONNIE - Java and AI in Europe
Deal - Spring Boot e Angular (17+)
Comentários (0)
Recomendados para vocêSavegnago - Lógica de Programação