Getters e Setters?

Logo quando comecei a programar orientado a objetos, percebi que muitas aplicações faziam o uso dos famosos pares get/set, então a primeira coisa que eu fazia ao construir uma classe, era pedir para que a IDE gerasse esses pares dos meus atributos privados antes mesmo de fazer qualquer coisa. Mas o que eu não me questionava, era sobre o real motivo do uso dessa dupla.

Hoje em dia vejo muitas aplicações que cometem esse mesmo equívoco que eu cometia há alguns anos atrás, fazem o uso do recurso (que nesse caso passaria a não ser um recurso) sem saber a razão, isso me remete até ao meu primeiro post.

Essa questão sobre o uso de getters e setters tem muito a ver como as coisas são feitas hoje em dia em relação ao desenvolvimento de software, principalmente em desenvolvimento para web, eu diria. Perdeu-se o seu principal foco, razões e objetivos e com isso surgem casos como o uso desenfreado dos getters e setters.

Getters e setters devem ser originalmente usados para encapsular seus atributos, evitando assim que eles sejam acessados diretamente. Dessa forma podemos aplicar determinada regra de negócio antes de atribuir valor a um atributo. Não é necessário, por exemplo, usar getters e setters em alguns objetos que serão imutáveis, ou então, apenas em objetos que servem para receber valor, nesses casos os getters e setters tornariam-se desnecessários.

Hoje em dia só faço o uso dessa dupla, quando realmente sinto essa necessidade, quando sei que meu atributo poderá vir a ter uma regra de negócio específica ou por algum motivo muito peculiar (ver mais abaixo), caso contrário, não uso. Em muitos casos passar os valores para o objeto utilizando o método construtor já resolveria o problema de forma simplória.

Deve-se considerar também, a possibilidade do seu software ser uma API aberta, usada e modificada por outros desenvolvedores, onde talvez você não tenha necessidade de um getter/setter, mas provavelmente para fornecer uma maior flexibilidade do código – considerando a possibilidade dele ser extendido – talvez seja interessante disponibilizar os tais pares. Da mesma forma que para debugar um código, talvez seja interessante fazer o uso de getters e setters para saber o valor que está sendo atribuído a uma variável, ao invés de espalhar milhões de breakpoint pelo código.

Links Interessantes
Fowler e Getters
Getter Erradictor
Why getter and setter methods are evil
Como não aprender Java e orientação a objetos

Arquitetura e Padrões

Se você gostou desse tópico, por favor considere deixar um comentário ou se inscreva no feed e tenha no futuro todos os tópicos entregues diretamente no seu agregador.

Comentários

3 Respostas para “Getters e Setters?”

Deixe seu Comentário

(obrigatório)

(obrigatório)