Olá Felipe, tudo bem com você?
Utilizar métodos públicos com nomes genéricos como getValue
e setValue
pode parecer uma boa ideia inicialmente, principalmente pela perspectiva de reduzir a repetição de código. No entanto, há algumas razões pelas quais isso geralmente não é recomendado em programação orientada a objetos:
Clareza e Manutenibilidade: Métodos com nomes genéricos podem tornar o código menos claro e mais difícil de entender. Por exemplo, se você tem um método chamado getValue
, pode não ser imediatamente óbvio para outros desenvolvedores (ou para você mesmo no futuro) qual valor está sendo obtido. Isso pode levar a confusões e erros, especialmente em sistemas maiores e mais complexos.
Especificidade e Flexibilidade: Métodos específicos para cada atributo permitem que você controle melhor o comportamento de cada um deles. Por exemplo, se você tem um atributo que precisa de validação ou transformação especial antes de ser definido ou obtido, um método específico para esse atributo facilita a implementação dessas regras. Com métodos genéricos, você perderia essa flexibilidade, pois teria que incluir condicionais dentro do método para tratar casos específicos, o que pode complicar o código e aumentar a chance de erros.
Segurança: Métodos genéricos podem expor a classe a alterações indesejadas em seus atributos, especialmente se eles forem públicos. Isso pode levar a problemas de segurança, onde um usuário mal-intencionado poderia alterar estados internos da classe de maneiras não previstas.
Princípio da Responsabilidade Única: Em orientação a objetos, é geralmente uma boa prática manter cada parte do seu código focada em uma única responsabilidade. Métodos genéricos como setValue
e getValue
podem acabar manipulando múltiplos atributos para diferentes propósitos, o que viola esse princípio.
Um exemplo prático disso seria uma classe Pessoa
com atributos nome
e idade
. Métodos específicos como getNome()
, setNome($nome)
, getIdade()
e setIdade($idade)
são claros e diretos. Eles permitem que você adicione lógicas específicas de validação para nome e idade separadamente, mantendo o código organizado e seguro.
Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!