Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Les identificateurs dans Java

Par Mohamed AIT ABDERRAHMAN Publié le 15/08/2015 à 22:51:19 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Dans cet article, je vais aborder la notion des identificateurs Java. Je considéré que vous avez déjà fait de la programmation Java, vous connaissez la syntaxe et que vous êtes à l’aise avec le concept de la programmation orienté objets. On aura trois aspects d’identificateurs que vous deviez assimiler qui sont :

  • Les identificateurs valides : Les règles que le compilateur utilise pour déterminer si un nom est valide.

  • Conventions de codage de Sun Microsystems : Dans cette section on traitera les recommandations de Sun Microsystems concernant le nommage des classes, des variables et des méthodes. Je vous recommande fortement de les respecter lors de l’écriture de vos programmes et vous allez voir pourquoi.

  • Norme de nommage JavaBeans : Les conditions de nommage de la spécification JavaBeans. Vous devriez les connaître et les utiliser dans vos futures applications.

Introduction

Un identificateur est un nom qui permet d'identifier une classe, une variable ou une méthode dans un programme. Il doit être valide, c'est-à-dire composé seulement de caractères Unicode, chiffres, symbole "$", et le caractère de soulignement "_" (Underscore en anglais). Voici les règles que vous devez connaitre:

  • Un identificateur doit commencer soit par une lettre, le symbole "$", ou un caractère de soulignement "_".

  • Il ne doit pas commencer par un chiffre.

  • Après le premier caractère, il peut contenir n’importe quelle combinaison de lettres, dollar "$", caractère de soulignement "_", ou des chiffres.

  • Dans la pratique, il n'y a pas de limite au nombre de caractères qu'un identificateur peut contenir.

  • Les identificateurs en Java sont sensibles à la casse, supinfo et SUPINFO sont deux identificateurs différents.

  • Vous ne pouvez pas utiliser un mot-clé comme un identifiant dans vos programmes. Voici ci-dessous la liste complète des mots-clés disponibles.

Les mots-clés const et goto sont réservés, même si elles ne sont pas utilisées pour le moment. true, false et null pourrait ressembler à des mots-clés, mais ils sont en fait des littéraux (on va les voir dans un prochain article), vous ne pouvez pas les utiliser comme identificateurs.

Table 1. la liste complète des mots-clés dans Java triée par ordre alphabétique

A abstract assert        
B boolean break byte      
C case catch char class const continue
D default do double      
E else enum extends      
F final finally float for    
G goto          
I if implements import instanceof int interface
L long          
N native new        
P package private protected public    
R return          
S short static strictfp super switch synchronized
T this throw throws transient try  
V void volatile        
W while          

Voici quelques exemples d'identificateurs valides :

int _a;
int $b;
int m2a;
int ___90_c;
int _$;
int ceci_est_un_identificateur_valide;

Voici quelques exemples d'identificateurs invalides, à vous de connaitre pourquoi:

int :ab;
int a-b;
int .c;
int d#;
int 7e;

Les Conventions de codage de Sun Microsystems

Sun Microsystems estime que, au cours de la durée de vie d'un logiciel, 20% de l'effort part dans la création et le test du code, et 80% de l'effort part dans la maintenance et l'amélioration de celui-ci. Si vous acceptez ces conventions, et vous commencez à coder avec, ils vont vous permettre de réduire l'effort impliqué dans les tests, la maintenance et l'amélioration. Ainsi, Sun Microsystems a créé un ensemble de normes de codage, et ils ont été publié sur le site d’Oracle, vous trouverez le lien dans la section « Ressources » à la fin de l’article.

Et pensez aussi aux accolades (ouvrantes et fermantes), ils sont parfois écrites sur la même ligne, ce qui rend le code illisible. Par exemple:

public class Student implements Runnable {
   private int mark;
   public Student(int mark){ this.mark = mark; }
   public synchronized void run() {
      while (mark < 10) { mark++; }
      System.out.print("Your mark: " + mark);
   } 
   public static void main(String[] args) {
      Student s = new Student(170509);
      Module m = new Module(“4JVA”);
      for(Exam e : m.getExams()) { new Thread(e.getMark(s)).start(); }
   } }

N'essayez pas de comprendre l'utilité de ce bout de code, mais plutôt, regardez comment il est illisible, vous aurez surement rencontré ce genre d’écriture malade et tordu si vous avez déjà travaillé sur un projet réalisé par une équipe qui ne connaît pas cette convention. Sachez que ni votre employeur, ni vos collègues de travail, ni Oracle, ni SUPINFO, ni moi ne nous voudrions que vous écriviez du code comme ceci. Ecrivez le plutôt comme ça:

public class Student implements Runnable {

   private int mark;

   public Student(int mark){ 
      this.mark = mark; 
   }

   public synchronized void run() {
      while (mark < 10) { 
         mark++; 
      }
      System.out.print("Your mark: " + mark);
   }

   public static void main(String[] args) {
      Student s = new Student(170509);
      Module m = new Module(“4JVA”);
      
      for(Exam e : m.getExams()) { 
         new Thread(e.getMark(s)).start(); 
      }
   } 
}

Voici les normes de nommage que Sun recommande :

  • Les classes

    La première lettre doit être en majuscule, et si le nom contient plusieurs mots, la première lettre de chaque mots doit être en majuscules, cette règle est appelée "camelCase". Par exemple:

    Person
    Student
    PrintWriter
    StringBuilder
    
  • Les interfaces

    Même principe que le nommage des classes, sauf que le nom, dans ce cas-là, doit typiquement être un adjective. Par exemple :

    Runnable
    Serializable
    Cloneable
    Comparable
    
  • Les méthodes

    La première lettre doit être en minuscules, et ensuite, appliqué la règle du camelCase. En outre, les noms devraient typiquement être une combinaison de verbe-nom. Par exemple:

    getFirstName
    isActive
    doWork
    setBithDate
    
  • Les variables

    Comme les méthodes, utilisez la règle du camelCase, en commencant par une miniscule. Sun Microsystems recommande que les noms soient courts, simple et significatifs. Par exemples:

    productWeight
    dateOfBirth
    accountName
    myObject
    
  • Les constantes :

    En Java, les constantes sont créés on ajoutant les mots-clés static et final lors des déclarations des variables. Ils devraient être nommés en utilisant des lettres majuscules avec des caractères de soulignement "_" comme séparateur:

    PAGE_SIZE
    DEFAULT_VALUE
    

Les normes de nommage JavaBeans

La spécification JavaBeans est destinée à aider les développeurs Java à créer des composants Java qui peuvent être facilement utilisés par d'autres développeurs Java dans un environnement de développement intégré (IDE, pour Integrated Development Environement) comme Eclipse, IntelliJ ou NetBeans. En tant que programmeur Java, vous voulez surement et sans doute être en mesure d'utiliser des composants de la librairie Java (la JDK, pour Java Development Kit), mais ça serait intéressant si vous pouviez également rechercher d’autres librairies Java sur internet. Et une fois que vous l’avez trouvé, vous souhaitez être en mesure de l’utiliser par le biais d’un IDE de manière à ce que vous ne deviez pas réécrire tout le code à partir de zéro. En utilisant les règles de nommage, la spécification JavaBeans permet de garantir que les outils peuvent reconnaître et utiliser des composants créés par différents développeurs.

JavaBeans sont des classes Java qui ont des propriétés. Ce sont tout simplement des variables d'instance privées. La seule façon dont ils peuvent être accessibles à partir de l'extérieur de leur classe est grâce à des méthodes de la classe. Les méthodes qui modifient la valeur d'une propriété sont appelées les setters, et les méthodes qui récupèrent la valeur d'une propriété sont appelées les getters. Voici les règles de nommage des propriétés JavaBean :

  • Le préfixe de la méthode setter doit être set. Par exemple, setMark() est un nom JavaBean valide pour une propriété nommée mark.

  • Si la propriété n’est pas un booléen, le préfixe de la méthode getter doit être get. Par exemple, getMark() est un nom valide d’un getter JavaBeans pour une propriété nommée mark. Gardez à l'esprit que ce n'est pas obligatoire d'avoir une variable nommée mark dans votre classe. Le nom de la propriété est déduite des getters et setters, et non pas à travers les variables dans votre classe.

  • Si la propriété est un booléen, le préfixe de la méthode getter est soit get ou is. Par exemple, getValidated() ou isValidated() sont tous les deux des noms JavaBeans valides pour une propriété booléenne.

  • Pour compléter le nom des méthodes getter et setter, mettez la première lettre du nom de la propriété en majuscules, puis l'ajouter au préfixe approprié (get, is, ou set).

  • La signature d’une méthode setter doit être marqué public, avec aucun type de retour, donc void, et un argument qui représente le type de la propriété.

  • La signature d’une méthode getter doit être également marqué public, sans arguments, et avec un type de retour qui correspond au type de l’argument de la méthode setter.

Deuxièmement, la spécification JavaBean supporte les événements, qui permettent aux composants de notifier d'autres lorsque quelque chose se produit. Le modèle d'événement est souvent utilisé dans des applications graphiques, quand un événement comme un clic est déclenché, d'autres objets qui peuvent avoir des traitements à faire quand cet évènement se produit reçoivent l'information. Ces objets sont appelés listeners (en français écouteurs). Les méthodes qui sont utilisées pour ajouter ou supprimer des listeners d'un événement doivent également respecter les normes de nommage JavaBean suivante:

  • Les noms de méthode utilisés pour ajouter (enregistrer) un listener avec une source d'événement doit utiliser le préfixe add, suivi par le type du listener. Par exemple, addActionListener() est un nom valide pour une méthode listener.

  • Les noms de méthode utilisés pour enlever un listener doit utiliser le préfixe remove, suivi par le type du listener en utilisant les mêmes règles que la méthode add de l'enregistrement.

  • Le type du listener qui doit être ajouté ou supprimé doit être passé comme argument à la méthode.

  • Les noms des méthodes du listener doivent se terminer par le mot Listener.

Exemple de signatures de méthodes JavaBean valides :

public void setMark(int value)
public int getMark()
public boolean isStudent()
public void addMarkListener(MarkListener l)
public void removeMarkListener(MarkListener l)

Exemple de signatures de méthodes JavaBean invalides :

void setCustomerName(String s) // doit être public
public void updateMyMark(int value) // 'update' ne peut pas être utilisé
public void addSupListener(MyListener m) // listener inadéquat

Conclusion

L'objectif de cet article et de connaitre les identifiants valides pour tous les composants Java. Alors rappelez-vous qu'un identifiant valide pour une variable est aussi un identifiant valide pour une méthode ou une classe. Cependant, vous devez faire la distinction entre les identificateurs valides et les conventions de nommage, telles que les normes JavaBeans, qui indiquent comment un composant Java devrait être nommé. En d'autres termes, vous devez reconnaître qu'un identifiant est légale même si elle ne se conforme pas aux normes de nommage.

Ressources

Voici quelques liens pour aller plus loin :

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels