web-dev-qa-db-fra.com

Caractères valides dans un nom de classe Java

Quels caractères sont valides dans un nom de classe Java? Quelles autres règles régissent les noms de classe Java (par exemple, les noms de classe Java ne peuvent pas commencer par un nombre)?

64
Zach

Vous pouvez avoir presque n'importe quel caractère, y compris la plupart des caractères Unicode! La définition exacte se trouve dans la spécification du langage Java de la section 3.8: Identificateurs .

Un identifiant est une séquence de longueur illimitée de lettres Java et de chiffres Java, dont le premier doit être une lettre Java. ...

Des lettres et des chiffres peuvent être tirés de l'ensemble du jeu de caractères Unicode, ... Cela permet aux programmeurs d'utiliser des identificateurs dans leurs programmes écrits dans leur langue maternelle.

Un identifiant ne peut pas avoir la même orthographe (séquence de caractères Unicode) qu'un mot clé (§3.9), un littéral booléen (§3.10.3) ou le littéral nul (§3.10.7), sinon une erreur de compilation survient.

Cependant, voir cette question pour savoir si vous devriez le faire ou non.

54
Jason Cohen

Chaque langage de programmation a son propre ensemble de règles et de conventions pour les types de noms que vous êtes autorisé à utiliser, et le langage de programmation Java n'est pas différent. Les règles et conventions pour nommer vos variables peuvent être résumées comme suit:

  • Les noms de variables sont sensibles à la casse. Le nom d'une variable peut être n'importe quel identifiant légal - une séquence illimitée de lettres et de chiffres Unicode, commençant par une lettre, le signe dollar "$" ou le caractère de soulignement "_". Cependant, la convention est de toujours commencer vos noms de variable par une lettre, et non par "$" ou "_". De plus, le caractère de signe dollar, par convention, n’est jamais utilisé. Vous rencontrerez peut-être des situations dans lesquelles les noms générés automatiquement contiendront le signe dollar, mais les noms de vos variables devraient toujours éviter de l’utiliser. Une convention similaire existe pour le caractère de soulignement; Bien qu'il soit techniquement légal de commencer le nom de votre variable par "_", cette pratique est déconseillée. Les espaces blancs ne sont pas autorisés.

  • Les caractères suivants peuvent être des lettres, des chiffres, des signes dollar ou des caractères de soulignement. Les conventions (et le sens commun) s'appliquent également à cette règle. Lorsque vous choisissez un nom pour vos variables, utilisez des mots entiers plutôt que des abréviations cryptiques. Cela facilitera la lecture et la compréhension de votre code. Dans de nombreux cas, votre code s'auto-documentera également; Les champs nommés cadence, vitesse et vitesse, par exemple, sont beaucoup plus intuitifs que les versions abrégées, telles que s, c et g. Notez également que le nom que vous choisissez ne doit pas être un mot clé ou un mot réservé.

  • Si le nom que vous choisissez se compose d'un seul mot, épelez-le en toutes lettres minuscules. S'il comporte plus d'un mot, mettez en majuscule la première lettre de chaque mot suivant. Les noms gearRatio et currentGear sont d'excellents exemples de cette convention. Si votre variable stocke une valeur constante, telle que static final int NUM_GEARS = 6, la convention change légèrement, mettant en majuscule chaque lettre et séparant les mots suivants avec le caractère de soulignement. Par convention, le caractère de soulignement n'est jamais utilisé ailleurs. 

De le tutoriel Java officiel .

16
Ivan Bosnic

Suite aux réponses précédentes, il est intéressant de noter que:

  1. Java autorise tous les symboles monétaires Unicode dans les noms de symbole. Ainsi, tous les éléments suivants fonctionneront:

$ var1 £ var2 € var3

Je crois que l’utilisation des symboles monétaires a pour origine C/C++, où les variables ajoutées à votre code par le compilateur ont normalement commencé par «$». Un exemple évident en Java est le nom des fichiers '.class' pour les classes internes, qui, par convention, ont le format 'Outer $ Inner.class'

  1. De nombreux programmeurs C # et C++ adoptent la convention de placer "I" devant les interfaces (classes virtuelles pures en C++). Ceci n'est pas obligatoire, et donc pas effectué, en Java car le mot-clé implements le dit très clairement lorsqu'il s'agit d'une interface.

Comparer:

class Employee: public IPayable // C++

avec

class Employee: IPayable // C #

et 

la classe Employee implémente Payable // Java.

  1. De nombreux projets utilisent la convention qui consiste à placer un tiret de soulignement devant les noms de champs, afin de pouvoir les distinguer facilement des variables et paramètres locaux, par exemple.

double salariat privé;

Une petite minorité place le trait de soulignement après le nom du champ, par exemple.

double salaire privé_;

9
Garth Gilmour

Comme l'a déjà indiqué Jason Cohen, la spécification du langage Java définit ce qu'est un identificateur légal dans la section 3.8:

"Un identifiant est une séquence de lettres et de chiffres Java de longueur illimitée, le premier Doit être une lettre Java. [...] Une" lettre Java "est un caractère dont la méthode Character.isJavaIdentifierStart ( int) renvoie true. Un 'Java letter-or-digit' est un caractère pour lequel la méthode Character.isJavaIdentifierPart (int) renvoie true. "

J'espère que cela répond à votre deuxième question. Concernant votre première question Des professeurs et des compilateurs Java (autant que je puisse m'en souvenir) m'ont appris qu'un nom de classe Java devrait être un identifiant commençant par une lettre majuscule, mais je ne trouve aucune source fiable à ce sujet. Lors de l’essai avec OpenJDK, il n’y a pas d’avertissement lorsqu’on commence les noms de classe avec des lettres minuscules ou même un signe-$. Lorsque vous utilisez un signe-$, vous devez l'échapper si vous compilez depuis un shell bash.

4
EriF89

J'aimerais ajouter à la réponse de bosnic que tout caractère monétaire valide est légal pour un identifiant en Java. th € est un identifiant légal, de même que € this, et € aussi. Cependant, je ne sais pas comment modifier sa réponse, je suis donc obligé de poster cet ajout trivial.

2
MetroidFan2002

Quelles autres règles régissent les noms de classe Java (par exemple, les noms de classe Java ne peuvent pas commencer par un nombre)?

  • Les noms de classe Java commencent généralement par une lettre majuscule.
  • Les noms de classe Java ne peuvent pas commencer par un nombre.
  • s'il y a plusieurs mots dans le nom de la classe, comme "MyClassName", chaque mot doit commencer par une lettre majuscule. Par exemple, "MyClassName". Cette convention de nommage est basée sur CamelCase Type.
1
Deepak Kumar

Les noms de classe doivent être des noms dans UpperCamelCase, avec la première lettre de chaque mot en majuscule. Utilisez des mots entiers - évitez les acronymes et les abréviations (sauf si l'abréviation est beaucoup plus utilisée que la forme longue, telle que URL ou HTML) . Les conventions de dénomination peuvent être lues ici:

http://www.Oracle.com/technetwork/Java/codeconventions-135099.html

0
Sachin Tiwari

Les identifiants sont utilisés pour les noms de classe, les noms de méthodes et les noms de variables. Un identifiant peut être n’importe quelle séquence descriptive de lettres majuscules et minuscules, de chiffres ou de caractères de soulignement et de signe dollar. Ils ne doivent pas commencer par un chiffre, de peur de se confondre avec un littéral numérique. Encore une fois, Java est sensible à la casse, donc VALUE est un identifiant différent de Value . Quelques exemples d'identificateurs valides sont:

AvgTemp, compte a4, $ test, this_is_ok

Les noms de variable non valides incluent:

2count, haute température, pas/ok

0
navneet kumar