2016-07-26 1 views
0

J'utilise NetBeans IDE et avant Java, j'étais un programmeur C++. À partir de C++, ce que j'apprends, c'est que les noms de variables constantes ne doivent contenir que des majuscules. Je pense que la plupart des langages de programmation suggèrent que les variables constantes ne devraient contenir que des lettres majuscules avec des traits de soulignement pour séparer les mots.Pourquoi les variables membres finales non statiques ne sont pas requises pour suivre les conventions de dénomination constantes?

Mon IDE, NetBeans, ne m'avertit de la convention que lorsque j'essaie de déclarer une variable membre static en minuscules. Ce n'est pas grave si la variable est final, mais non statique.

final int mem1 = 90; // no warning 
static final int mem2 = 90; // warning 

devrait-il pas programmeur être forcé d'utiliser des lettres majuscules pour nommer une sorte de (statiques, non statiques) variables constantes?

+0

c'est une convention de nommage. Vous avez raison de dire que cela devrait être suivi pour plus de lisibilité, mais je ne pense pas qu'il sera jamais appliqué, ni qu'il devrait être appliqué. – SomeJavaGuy

+0

Parce que les conventions de dénomination ne font pas partie des spécifications de langage Java. – EJP

+1

Un 'final' non statique n'est pas une constante réelle. Il pourrait également être initialisé dans le constructeur, en fonction de certaines valeurs calculées d'exécution. Voir aussi http://stackoverflow.com/questions/10844268/difference-between-variables-final-vs-static-final-variables –

Répondre

6

final ne fait pas de valeur une constante, cela signifie simplement que la valeur du champ ne peut être affectée qu'une seule fois.

Voici un exemple d'un dernier champ non constant:

public final class IntHolder { 
    private final int value; 

    public IntHolder(int value) { 
    this.value = value; 
    } 

    public int get() { 
    return value; 
    } 
} 

Ici, le champ value est clairement différent pour chaque instance de IntHolder, il est donc pas une constante. Nommer le champ comme une constante ne ferait que créer de la confusion.

+0

Je vois. Merci :) –

5

Seules les constantes doivent être en majuscules. Cependant, cela dépend du programmeur comme il suit la convention. Certains aiment aussi commencer les constantes avec un '_' suivi du nom en minuscules. De plus, il n'est pas nécessaire de mettre une telle vérification dans le compilateur car cela peut dépendre de la vue du programmeur.