Identificateurs

images/whitebelt.png

En java les distinctions minuscules/majuscules sont importantes (nom est différent de Nom). Pour les identificateurs on peut inclure des chiffres dans le nom à condition que ce ne soit pas le premier caractère.

Pour des règles plus précises consulter la documentation de la classe java.lang.Character et les méthodes statiques: isJavaIdentifierStart isJavaIdentifierPart isIdentifierIgnorable.

"Identifier part" est ici

Quelques identificateurs légaux. 

   nomUtilisateur
   passé
   d2r2
   parm_
   £

Conventions de codage

Il existe des règles standard de nommage (qui ne sont pas contrôlées par le compilateur).

  • Quand un identificateur est composé de plusieurs mots accolés chacun doit commencer par une majuscule (sauf, dans certains cas, la première lettre -voir règles ci-après-). CompteEnBanque, compteCourant
  • Les types définis par le programmeur (classes, enums,…) doivent commencer par une majuscule (MaClasse).

    Un cas particulier est celui des paramètres-type qui sont en général définis avec une simple lettre majuscule comme X dans List<X> (ces paramètres seront expliqués ultérieurement).

  • Variables et méthodes doivent commencer par une lettre minuscule: nomUtilisateur toString()
  • Les constantes static final doivent être constituées uniquement de majuscules; on utilise le caractère de soulignement pour séparer les mots : TAILLE_MAX
  • Sinon essayez d'éviter les soulignements (sauf, peut-être en fin comme dans parm_). Evitez également le caractère dollar $ (bien qu’il soit légal il est réservé à des identificateurs générés par le compilateur).
  • Les noms de packages et des modules doivent être complètement en minuscules (nous verrons ultérieurement ces notions de package et de module). Il y a avec ces noms une convention particulière qui est de ne pas utiliser de nombre (en particulier à la fin du nom); la raison (en particulier pour les modules) en est que les outils risquent de confondre ce nombre avec les numéros de version.
[Avertissement]internationalisation

Il est tout à fait possible d’utiliser des caractères accentués dans les identifiants à l’intérieur des codes … mais il y a quelques précautions à prendre:

  • Ne pas utiliser de caractères accentués pour des noms de classe (+ autre types composites comme enum, interface). La raison en est que les fichiers qui contiennent ces types doivent également reproduire ces accents. Or les systèmes d’exploitation ne sont pas homogènes en ce qui concerne la représentation des accents dans les noms de fichier. Même si la norme Java a prévu une solution de secours dans ce cas … la norme est rarement (voire jamais!) respectée!
  • Même remarque pour les noms de package et de module
  • L’utilisation de termes dans notre langue est commode pour permettre une meilleure compréhension du code … tant que les personnes chargées de la maintenance utilisent la même langue! (essayez de lire un programme dans lequel tous les termes sont en hongrois et vous allez comprendre!).

    Pour les projets internationaux on est souvent condamné à utiliser comme viatique une sorte d’Anglais "international" (?)

  • Attention au mode de codage des fichiers sources. Dans un grand projet impliquant différentes équipes il faudra se mettre d’accord a priori sur le mode de codage texte.

    Pour le Français ce sera UTF8 ou ISO8859-1 (éviter absolument les codages windows genre CP1252!! - même si vous êtes sous un système Windows -)