53 votes

'public static final' ou 'private static final' avec getter ?

En Java, il est enseigné que les variables doivent rester privées pour permettre une meilleure encapsulation, mais qu'en est-il des constantes statiques ? Cette:

 public static final int FOO = 5;

Serait équivalent en résultat à ceci:

 private static final int FOO = 5;
...
public static getFoo() { return FOO; }

Mais quelle est la meilleure pratique ?

9voto

Serdar Dogruyol Points 3365

Étant donné qu'une variable finale ne peut pas être modifiée ultérieurement, si vous l'utilisez comme constante globale, rendez-la simplement publique, aucun getter n'est nécessaire.

5voto

Tomasz Nurkiewicz Points 140462

Getter est inutile ici et sera très probablement intégré par la JVM. Tenez-vous en à la constante publique.

L'idée derrière l'encapsulation est de protéger les modifications indésirables d'une variable et de masquer la représentation interne. Avec des constantes, cela n'a pas beaucoup de sens.

3voto

profimedica Points 371

Utilisez les variables en dehors de la classe comme :

 public def FOO:Integer = 5; 

Si vous l'encapsulation n'est pas votre priorité. Sinon, utilisez la deuxième variante pour exposer une méthode et non la variable.

 private static final int FOO = 5;
...
public static getFoo() { return FOO; }

Est également une meilleure pratique pour la maintenance du code de ne pas s'appuyer sur des variables. N'oubliez pas que "l'optimisation prématurée est la racine de tous les maux".

1voto

shams Points 1986

Je resterais avec le getFoo() car il vous permet de modifier l'implémentation à l'avenir sans changer le code client. Comme @Tomasz l'a noté, la JVM intégrera probablement votre implémentation actuelle, vous payez donc une pénalité de performance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X