Tem equivalente em java para este código ? (sem necessidade de declarar get e set pra cada atributo)

class foo {

    private $bar;

    public function __get($name) {

        echo "Get:$name";

        return $this->$name;

    }

    public function __set($name, $value) {

        echo "Set:$name to $value";

        $this->$name = $value;

    }

}

$foo = new foo();

echo $foo->bar;

$foo->bar = 'Vicente';

echo "[$foo->bar]";

Com Lombok:
https://projectlombok.org/features/GetterSetter

O Lombok cria os getters e setters para você.

Valeu cara, menos linhas de códigos agora no POJO.

1 curtida

Você pode utilizar atributos públicos.
A partir do Java 14 você também pode usar record.

Se forem ler o livro “Código Limpo”, vão entender que não faz sentido essa mania de criar getters e setters para atributos privados pois estes métodos expõe o atributo privado como se ele fosse público.

Infelizmente essa mania começou lá no final da década de 90 com o padrão Java Beans,

Getters e setters só fazem sentido no caso de o objeto possuir uma interface e nessa interface os getters e setters representam alguma propriedade do objeto.

4 curtidas

É a mania de seguirem “bíblias”, como se aquilo fosse o certo de sempre seguir mesmo sem ter necessidade.

E isso perpetua até dentro das empresas, independente da senioridade, pela formação do cara ter sido baseada nessas pregações da OOP, com a maioria forçando exemplos sempre da forma “bíblica”. Ai pra completar usam gambiarras como lombok pra esconder em tempo de desenvolvimento uma complexidade que seria desnecessária, quando na verdade na maioria dos casos só precisam de uma simples estrutura de dados. Por outro lado, se nao fizer isso vai ser mal falado na equipe. Quando o problema está na cultura, nao tem jeito.

E não acontece só com get/set. Uso de interfaces pra tudo sem necessidade, heranças, etc.

2 curtidas

Exatamente.

Sobre cultura, há alguns anos trabalhei numa instituição que é referência nacional em aprendizagem.
Nessa empresa, os métodos das classes obrigatoriamente tinham que começar com o prefixo “do” para que o analista que fazia a revisão de código soubesse que aquilo ali era um método. :sob:

1 curtida

Gente, vejo que preciso comprar desses livros que citaram aí, código limpo, etc.