Metodos Static - Quando Utilizar

Fala galera, sou iniciante na área e queria tirar uma dúvida.
Fiz um mini projeto (joguinho em console), mas utilizei apenas métodos static em todas as classes. Sei que métodos Static não é OOP.
Mas minha duvida é, utilizar muitos static interligando classes é má prática de programação?

1 curtida

Olá @bvy, tudo bem?

Então, em resumo usa-se classes estáticas para classes utilitárias, como classes auxiliares pra formatação de datas, realização de cálculos, entre outros. Isso ocorre porque métodos estáticos executam tarefas sem existir a vinculação de um objeto. sendo assim não usam os atributos de uma instância.

Como ao usar métodos estáticos nenhum objeto é referenciado, você não estaria usando orientação à objetos e, portanto, tentar interligar classes dessa forma não faz muito sentido. Por isso a orientação é não implementar a lógica negocial utilizando métodos estáticos, afinal você estaria perdendo o benefício de usar programação orientada à objetos

Você pode ler mais sobre isso aqui

Espero ter ajudado! :smiley:

4 curtidas

Sem ver o código, não dá para opinar.

Usar métodos estáticos não é “ruim” por si só, tudo depende do contexto, e existem casos de uso legítimos para eles.

Por exemplo, na própria linguagem temos a classe java.lang.Math, que só possui métodos estáticos, e faz todo sentido que seja assim: não há motivo para obrigar a criar uma instância só para calcular a raiz quadrada, por exemplo. Math.sqrt(10); é mais direto que Math m = new Math(); m.sqrt(10);. Isso porque o cálculo não precisa de informações de uma instância específica, então um método estático é mais simples (mesmo que “não seja OOP” ).

Aliás, um grande parênteses: não existe uma definição única, canônica e universal de Orientação a Objeto. Para uma discussão mais detalhada, veja aqui e aqui. E mesmo a questão de “boa prática” é discutível, muita gente gosta de acreditar que “boa prática” é algo mágico que basta usar e tudo sempre ficará “bom” ou “certo”. Cada caso é um caso, o importante é entender os mecanismos, prós e contras e usar o que for mais adequado em cada contexto - e isso é algo que só vem com experiência, não adianta tentar decorar receitas prontas (que no fundo é o que as “boas práticas” acabam sendo) e achar que é a solução pra tudo.

Enfim, se você tem objetos que precisam “conversar entre si” (são interligados de alguma maneira), então métodos estáticos geralmente não são a melhor solução. Mas como você não mostrou o código nem deu mais detalhes sobre o que são esses objetos e o que fazem, não tem como opinar melhor.

1 curtida