Conventions de programmation en Java

Le respect des conventions décrites ci-dessous rendra votre code beaucoup plus compréhensible pour toute personne qui le lira (y compris vous-même). A l'inverse le non-respect de ces règles rendra plus difficle cette compréhension et risque de mettre de fort mauvais humeur toute personne ayant à évaluer votre code ;).

Les conventions décrites ci-dessous sont extraites du manuel fourni par Oracle.

Système de fichiers

  • Le code source des classes se situe dans des fichiers dont l'extension est .java et les classes compilées sont dans des fichiers dont l'extension est .class.
  • Un fichier .java ne doit contenir le code source que d'une et une seule classe publique Java.
  • Un fichier .java doit contenir dans cet ordre : une zone de commentaires, le package auquel les classes appartiennent, les import nécessaires puis la déclaration des classes et interfaces.
  • La déclaration d'une classe ou d'une interface doit contenir dans cet ordre : une zone de commentaires, l'ouverture de la déclaration (class ou interface), les variables de classe précédées de leurs commentaires, les variables d'instance précédées de leurs commentaires, les constructeurs précédés de leurs commentaires puis les méthodes précédées de leurs commentaires.
  • Les fichiers de plus de 2000 lignes doivent être évités.
  • Il est préferrable de séparer le code source des classes, les classes compilées et leur documentation. En général, le répertoire d'un projet Java contient un répertoire src pour le source, class pour les classes compilées et doc pour la documentation notamment celle générée par l'outil javadoc.

Nommage

  • La nom des packages est composé de caractères alphanumériques et de préférence tout en minuscules ({a-z} {0-9}).
  • Le nom des classes et des interfaces est composé de caractères alphanumériques ({A-Z} {a-z} {0-9}). La première lettre est en majuscule ainsi que la première lettre de tout mot dans le nom de la classe, par exemple : class ListeDeCaracteres
  • Le nom des méthodes et des variables d'instance est composé de caractères alphanumériques ({A-Z} {a-z} {0-9}). La première lettre est en minuscule mais la première lettre de tout mot dans le nom de la classe, par exemple : public boolean contientCaractere(String str)
  • Le nom des variables de classe est entièrement en majuscule avec le caractère _ pour séparer les différents mots du nom, par exemple : public static int MAX_DE_CARACTERES = 20;

Indentation

  • Les accolades ouvrantes doivent figurer à la fin de la ligne qui créé un nouveau bloc.
  • Les accolades fermantes se situe au même niveau que la ligne qui ouvre le bloc.
  • Le code à l'intérieur du bloc doit être décalé d'une tabulation par rapport au bloc précédent. Par exemple :
public class MaClasse {
   public int[] monAttribut;
   public MaClasse(int taille){
      monAttribut = new int[taille];
      for (int i = 0; i < monAttribut.length; i++) {
         monAttribut[i] = i;
      }
   }
}
  • Éviter les lignes de plus de 80 caractères.
  • Les sauts de lignes doivent être faits après une virgule ou avant un opérateur.
  • Après un saut de ligne, aligner la nouvelle ligne avec le début de l'expression auquel elle appartient. Par exemple :
a = premiereMethode(parametre1,
                    secondeMethode(parametre2
                                   + parametre3)); 

Documentation et commentaires

  • Les commentaires d'explication du code utilisent le symbole //. Les commentaires utilisés pour générer de la documentation avec l'outil javadoc commencent avec le symbole /** et se terminent par */.
  • Le commentaire d'une classe (en début de fichier) a la forme suivante :
/**
* nom de la classe
*
* informations et version
*
* date
*
* copyright
*/
  • Le commentaire d'une méthode (juste avant la méthode) a la forme suivante :
/**
* nom de la méthode
*
* informations
*
* paramètres d'entrée
*
* retour de la méthode
*
* exceptions renvoyées
*/

Gauthier Picard