Le fait que tout soit une fonction a aussi tendance à cacher le fait qu'un getter peut avoir un side effect/être cher à calculer, et ca c'est mal. si t'as un side effect notable, ça devrait être une fonction, pas get/set.
Ca par contre, c'est tout à fait vrai ! C'est bien pour cela que je n'utilise pas de getter dans ce cas. De même, si un getter retourne une référence, il faut que la référence soit la même d'un appel à l'autre (tant que la valeur n'a pas été modifiée).
Pour les cas comme ça, j'utilise un get "special". Par exemple, si le get va chercher la valeur en SQL (donc ça a un coût), je l'appel getValueFromDB, si c'est un calcul, getValueFromCalc. ça casse un peu (carrement en fait) la logique de masquer l'implémentation, mais ça évite les soucies de perf. Dans tout les cas je le spécifie bien explicitement dans la doc.
[^] # Re: java ?
Posté par kowalsky . En réponse au journal Lutter contre l'overengineering. Évalué à 2.
Pour les cas comme ça, j'utilise un get "special". Par exemple, si le get va chercher la valeur en SQL (donc ça a un coût), je l'appel getValueFromDB, si c'est un calcul, getValueFromCalc. ça casse un peu (carrement en fait) la logique de masquer l'implémentation, mais ça évite les soucies de perf. Dans tout les cas je le spécifie bien explicitement dans la doc.