2009-10-08 5 views

Répondre

7

Il y a toujours des effets secondaires :-)

Dans ce cas, il peut être un simple POJO maintenant. Mais dans 2 semaines (mois, années) quelqu'un peut ajouter une certaine logique conditionnelle à vos méthodes getter et getCurrentAmount() peut ne plus être le même que this.currentAmount (ce dernier peut être une dernière valeur connue "mise en cache", par exemple et la méthode getter peut le recalculer).

C'est pourquoi c'est toujours une bonne idée de coder à l'interface, même si l'interface dans ce cas est l'objet lui-même (par exemple ses getters publics).

0

Bien qu'il y ait peu de différence d'un point de vue opérationnel, je dirais que c'est certainement une bonne pratique d'utiliser une méthode plutôt que la référence directe. Vous ne savez jamais quand le simple code que vous écrivez aujourd'hui va croître au point où la référence directe sera brisée par quelqu'un qui fait quelque chose de plus élaboré avec la variable locale (mise en cache, le recalculant d'autres données, ect).

0

Généralement, non, cela n'a pas d'importance.

Je voudrais utiliser le deuxième exemple car il supprime l'indirection et vous savez exactement à quelle valeur vous accédez. Vous pouvez décider plus tard que vous voulez effectuer un calcul supplémentaire sur la valeur avant de la renvoyer, changeant ainsi la signification de la méthode getter. (Bien que dans ce cas, vous devriez créer une nouvelle méthode getter qui retourne la nouvelle valeur ... mais disons que vous étiez fatigué et que vous venez d'ajouter une ligne dans ce même getter par accident.) Maintenant, vous obtiendrez une valeur que vous pourriez ou pourrait maintenant attendre. Si cela peut être ce que vous voulez et que vous voulez que cela soit appliqué à travers votre code, alors bon, sinon vous avez un problème ou vous obtiendrez le mauvais résultat sans le savoir.

0

Malheureusement, Java ne supporte pas le uniform access principle (d'autres langages, comme C#, Scala et Ruby, do), et nous sommes donc bloqués avec la syntaxe getter/setter moche et encombrante.

+0

Je n'avais jamais entendu parler de UAP auparavant, merci de m'avoir édifié là-dessus –

Questions connexes