Re : aku, izb, John Topley...
Attention aux problèmes de mutabilité...
Il peut sembler judicieux d'omettre les getters/setters. Cela peut même être acceptable dans certains cas. Le vrai problème avec le modèle proposé ici est la mutabilité.
Le problème est qu'une fois que vous passez une référence d'objet contenant des champs non finaux et publics. Toute autre chose avec cette référence est libre de modifier ces champs. Vous n'avez plus aucun contrôle sur l'état de cet objet. (Pensez à ce qui se passerait si les chaînes de caractères étaient mutables).
Les choses se gâtent lorsque cet objet est une partie importante de l'état interne d'un autre, dont vous venez d'exposer l'implémentation interne. Pour éviter cela, une copie de l'objet doit être retournée à la place. Cela fonctionne, mais peut causer une pression GC massive à cause des tonnes de copies à usage unique créées.
Si vous avez des champs publics, envisagez de rendre la classe en lecture seule. Ajoutez les champs en tant que paramètres au constructeur, et marquez les champs comme finaux. Sinon, assurez-vous de ne pas exposer l'état interne, et si vous devez construire de nouvelles instances pour une valeur de retour, assurez-vous qu'elle ne sera pas appelée de manière excessive.
Voyez : " Java efficace "par Joshua Bloch -- Point n° 13 : Favoriser l'immuabilité.
PS : N'oubliez pas non plus que toutes les JVM actuelles optimisent la méthode getMethod si possible, ce qui se traduit par une seule instruction de lecture de champ.