Vous êtes sur la page 1sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

Guide francophone des conventions de codage


pour la programmation en langage Java.

Hugo ETIEVANT
http://www.cyberzoide.net

Hugo ETIEVANT

Page 1 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

AVANT-PROPOS
Date de dernire modification : 3 mai 2004.
Vrifiez sur le site de lauteur si une mise jour plus rcente de ce document est disponible.
Ce document est tlchargeable ladresse suivante : http://www.cyberzoide.net/java/javastyle/.
Ce document est gratuit, il peut librement tre utilis par tout dveloppeur. En revanche, aucune copie ni moyen
de diffusion de se document ne peut tre soumis rtribution.
Ce document ne peut tre modifi. Seules les copies conformes loriginal peuvent tre diffuses.
Ce document reste lentire proprit de son auteur : Hugo ETIEVANT.

Hugo ETIEVANT, 2004. Tous droits rservs.

HISTORIQUE
3 mai 2004 : annexe JavaDoc ajoute
2 mai 2004 : annexes mots rservs et qualifieurs rajoutes
1er mai 2004 : cration du document

REMERCIEMENTS
Merci request et Braim pour leurs corrections et suggestions.

Hugo ETIEVANT

Page 2 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

SOMMAIRE
AVANT-PROPOS ....................................................................................................................2
HISTORIQUE ..........................................................................................................................2
REMERCIEMENTS ................................................................................................................2
SOMMAIRE .............................................................................................................................3
INTRODUCTION ....................................................................................................................5
DE LUTILITE DADOPTER DES CONVENTIONS DE CODAGE ........................................................5
LORIGINE DES CONVENTIONS DECRITES ..................................................................................5
PRINCIPES GENERAUX ..............................................................................................................5
Equilibre ..............................................................................................................................5
Brivet ................................................................................................................................6
Uniformit ............................................................................................................................6
Consistance ..........................................................................................................................6
SYSTEME DE FICHIERS ......................................................................................................7
EXTENSIONS DES FICHIERS .......................................................................................................7
FICHIERS COMMUNS .................................................................................................................7
ORGANISATION ........................................................................................................................7
TAILLE DES SOURCES ...............................................................................................................8
FORMATAGE..........................................................................................................................9
INDENTATION ...........................................................................................................................9
Tabulation ............................................................................................................................9
Blocs.....................................................................................................................................9
Taille des lignes ...................................................................................................................9
LIGNES BLANCHES..................................................................................................................10
ESPACES .................................................................................................................................10
NOMMAGE ............................................................................................................................12
PACKAGE ...............................................................................................................................12
CLASSES ET INTERFACES ........................................................................................................12
METHODES .............................................................................................................................13

Hugo ETIEVANT

Page 3 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

ATTRIBUTS, VARIABLES ET PARAMETRES ..............................................................................14


CONSTANTES ..........................................................................................................................15
COMMENTAIRES ................................................................................................................16
BLOC DE COMMENTAIRE ........................................................................................................16
COMMENTAIRE MONO LIGNE ..................................................................................................16
INACTIVATION DUNE PORTION DE CODE ................................................................................16
PRIORITE ENTRE COMMENTAIRES ...........................................................................................17
DECLARATIONS ..................................................................................................................18
VARIABLES ............................................................................................................................18
Indentation .........................................................................................................................18
Initialisation.......................................................................................................................19
Emplacement......................................................................................................................19
METHODES .............................................................................................................................20
BLOCS ....................................................................................................................................20
ORDRE....................................................................................................................................20
INSTRUCTIONS....................................................................................................................22
SIMPLES INSTRUCTIONS ..........................................................................................................22
INSTRUCTION DE RETOUR .......................................................................................................22
STRUCTURES DE CONTROLE ...................................................................................................22
Expression ternaire............................................................................................................22
Boucle For .........................................................................................................................23
Boucle While ......................................................................................................................23
Boucle Do...........................................................................................................................23
Condition If ........................................................................................................................23
Condition Switch................................................................................................................24
Exception Try-Catch ..........................................................................................................25
BONNES PRATIQUES DE DEVELOPPEMENT .............................................................26
LIENS ......................................................................................................................................27
QUELQUES SITES UTILES.........................................................................................................27
QUELQUES DOCUMENTS DE REFERENCE (EN ANGLAIS)...........................................................27
ANNEXE 1 LES MOTS RESEVES DU LANGAGE JAVA ..............................................28
ANNEXE 2 LES QUALIFIEURS JAVA .............................................................................31
ANNEXE 3 LES COMMENTAIRES JAVADOC ..............................................................32
INDEX .....................................................................................................................................34

Hugo ETIEVANT

Page 4 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

INTRODUCTION
DE LUTILITE DADOPTER DES CONVENTIONS DE CODAGE
Dans le cycle de vie dun produit logiciel, la phase de maintenance reprsente la majeur partie
du temps (environ 80%). De plus, un logiciel est rarement dvelopp par une seule personne,
cest une quipe entire qui ralise le projet de dveloppement, avec toutes les contraintes de
relecture et de comprhension que cela implique. Et les dveloppeurs assurant la maintenance
ne sont pas en rgle gnrale ceux qui ont procd sa cration, leur temps dadaptation
avant une pleine productivit est fortement dpendante de leur capacit comprendre le code
source et assimiler la documentation relative au projet.
Ainsi, la russite dun projet logiciel, tant lors de la phase critique de dveloppement que dans
sa phase tout aussi essentielle de maintenance, dpend pour beaucoup des moyens mis en
uvre pour assurer une homognit dans le codage.
Cette homognit est assure par la mise en uvre de conventions strictes respectes par
tous.
Bien que la plupart des diteurs et outils de dveloppement proposent des fonctionnalits
permettant lhomognisation intuitive du code source (entre autre par lauto indentation du
code), il est des rgles que ces outils ne peuvent imposer aux dveloppeurs et que ces derniers
doivent pouvoir appliquer mme dans un environnement les plus simples (simple diteur texte
par exemple).

LORIGINE DES CONVENTIONS DECRITES


Le but de ce document est de prsenter les conventions gnralement admises par la
communaut des dveloppeurs en langage Java. Elles sont inspires des rgles proposes par
Sun, des rgles qui mont t inculques lUniversit et de ma pratique du langage Java.

PRINCIPES GENERAUX
EQUILIBRE
Les diffrentes recommandations faites ici peuvent parfois entrer en conflit. Par exemple, la
volont davoir une structure esthtique dun point de vue algorithmique et de faible
complexit peut tre un frein aux performances. Inversement, la course effrne aux
Hugo ETIEVANT

Page 5 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

performances (utilisation de la mmoire, vitesse dexcution) peut amener produire du code


peu structur et peu lisible. Il revient aux dveloppeurs de trouver un quilibre entre ces
recommandations en fonction des contraintes de leur projet. Il est vident quun projet de
haute technique fortement contraint (typiquement : un logiciel embarqu) devra privilgier les
performances .A linverse, un projet bureautique open source devra tre fortement structur.

BRIEVETE
Il faut tre succinct ! Les structures alambiques sont un frein la lisibilit et la
comprhension ; compromettant dautant la maintenance. Par contre, succinct ne veut pas dire
laconique : les commentaires sont toujours les bienvenus.

UNIFORMITE
Il faut tre homogne dans lusage des recommandations faites ici. Certaines dentre elles
sorganisent harmonieusement en diffrents groupes. Ce sont ces groupes qui doivent tre
adopts.

CONSISTANCE
Les recommandations que vous adopterez doivent tre appliques lintgralit de votre
projet. Si les rgles changent dune classe lautre, la comprhension du code sera difficile.
Lapplication uniforme dun groupe de recommandations est un gage de maintenabilit.

Hugo ETIEVANT

Page 6 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

SYSTEME DE FICHIERS
EXTENSIONS DES FICHIERS
Les noms des fichiers sources portent lextension .java et le bytecode gnr porte
lextension .class, les fichiers de configuration devraient porter lextension .properties.

FICHIERS COMMUNS
Les fichiers les plus frquemment joints au code source sont le fichier de directive de
compilation makefile (utilitaire make), le fichier build.xml (utilitaire Ant), le fichier de
description du contenu dun projet README.

ORGANISATION
Un projet de dveloppement logiciel est organis en de multiples rpertoires qui peuvent
judicieusement adopter la structure suivante :
PROJET/
build/
config/
docs/
generated/
idl/
ior/
lib/
log/
orb.bd/
src/

O src/ contient les sources du projet, build/ les classes compiles, docs/ la documentation
gnres via JavaDoc, idl/ les interfaces IDL1 si ncessaire, generated/ toutes classes
intermdiaires gnres lors du processus de compilation (par exemple selon les interfaces
IDL), config/ des fichiers de configuration ncessaires lexcution du projet, log/ pour les
fichiers de log dexcution du projet. Et autres rpertoires ior/, orb.db/ ncessaires au
stockage des objets gnrs en cours dexcution.

IDL (Interface Definition Language) : Langage d'interfaage des objets sous Corba.

Hugo ETIEVANT

Page 7 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

Ainsi un projet peut se contenter de la hirarchie minimaliste suivante :


PROJET/
build/
docs/
src/

Les classes doivent tre organises en packages. Les packages peuvent tre structurs.
Exemple :
PROJET/
build/
docs/
src/
pack1/
pack11/
pack12/
pack2/

TAILLE DES SOURCES


Il est recommand de ne pas excder 2000 lignes dans un fichier .java et de ne pas dpasser
les 80 colonnes.

Hugo ETIEVANT

Page 8 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

FORMATAGE
Le formatage du code consiste en son criture ar et homogne.

INDENTATION
TABULATION
Il ne faut pas utilis le caractre de tabulation car son interprtation varie selon les diteurs.
Configurez votre diteur pour que la tabulation crive 8 caractres espace.

BLOCS
Lentre dans un nouveau bloc fils impose le rajout dun niveau dindentation. Deux blocs de
mme niveau doivent dbuter sur la mme colonne (mme niveau dindentation).

TAILLE DES LIGNES


Une ligne ne doit pas excder 80 colonnes (indentations comprises).
Pour permettre lcriture de code, il peut alors savrer ncessaire de revenir la ligne la
suite dune virgule sparant diffrents paramtres dune mthode, o la prcdence dun
oprateur par exemple, et lextrieur de toute parenthse, de prfrence.
Exemples :
setMyVarOfMyClass(myVeryLongVar1, MyVeryLongExpression1, myVeryLongVar2,
myLonguestExpression2, myLonguestVariable3, myLonguestExpression3,
myLonguestVariable4);

et
double longSize = myVar1 * (myLongVar2 + myVeryLongVar3)
- anOtherVeryLongVar4;

alors que ceci est proscrire :


Double longSize = myVar1 * (myLongVar2 +
myVeryLongVar3) - anOtherVeryLongVar4;

De mme, au sein de lexpression dune structure de contrle, il est ncessaire de revenir la


ligne en cours dexpression et daugmenter lindentation de deux niveaux (et pas dun seul).
Par contre, le niveau dindentation du bloc des instructions internes la structure de contrle
nest pas affect. Tout ceci afin que les instructions et les lignes de lexpression ne soient pas
au mme niveau.

Hugo ETIEVANT

Page 9 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

Exemple :
if (!(condition1 || condition2)
&& (condition3 || condition4)
&& (condition5 || !condition6)) {
doSomethingAboutIt();
}

et pas :
if (!(condition1 || condition2)
&& (condition3 || condition4)
&& (condition5 || !condition6)) {
doSomethingAboutIt();
}

On revient la ligne dans les conditions suivantes :


aprs une virgule
avant un oprateur
de prfrence au sein dune parenthse de haut niveau, plutt que de petit niveau
le niveau dindentation doit tre le mme que celui de la ligne prcdente, sauf si cela
peut prter confusion, ce moment l, on augmente le niveau dindentation

LIGNES BLANCHES
Les lignes blanches doivent tre utilises pour sparer les mthodes, et des portions de code
distinctes.

ESPACES
Les espaces doivent tre utiliss profusion, mais pas nimporte o !
Lespace est obligatoire dans les conditions suivantes :
avant et aprs tout oprateur, sauf la parenthse pour laquelle cela est optionnel
aprs toute virgule
aprs tout mot rserv du langage
avant et aprs toute accolade
Lespace est autoris :
entre le nom dune mthode et la parenthse ouvrante listant ses paramtres
En revanche, il est proscrit :
avant les point-virgules de fin dinstruction
avant les crochets des tableaux
entre une variable et les oprateurs de pr/post incrment

Hugo ETIEVANT

Page 10 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

avant et aprs un oprateur de transtypage


Exemples :

A faire

A ne pas faire

int a = b + (c d);

int a=b+(c-d);

ou

ni

int a = b + ( c d );

int a = b + ( c - d ) ;

while (true) {

while(true){

myMethod (a, b, c, d);

MyMethod (a,b,c,d);

for (i = 0; i < 100; i++) {

for (i=0;i<100;i++) {

ou
for ( i = 0; i < 100; i++ ) {
++count;

++ count;

(MyClass)myVar.get(i);

(MyClass) myVar.get(i);

ni
( MyClass )myVar.get(i);
myTab[myInd] = myValue;

myTab [myInd] = myValue;

ou
myTab[ myInd ] = myValue;

Hugo ETIEVANT

Page 11 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

NOMMAGE
Une remarque gnrale doit tre faite sur tous les identifiants que vous utiliserez. Ils doivent
tre explicites, cest--dire que leur nom doit dnoter le contenu et la fonction de lobjet
nomm. Ils doivent galement tre succincts, il est trs difficile dutiliser un identifiant
rallonge : plus il est court, mieux cest.
Les acronymes apparaissant dans les noms doivent tre passs en minuscule (sauf linitiale
sil nest pas le premier mot).
Les identifiants doivent tre en langue anglaise. Ceci assure une diffusion maximale des
sources et une maintenabilit optimale par des quipes de dveloppement internationales.

PACKAGE
Les noms de package doivent tre en minuscule et ne pas reprendre des noms dj utiliss
dans le JDK employ. Ces noms doivent de prfrence tre le nom de lentreprise, du
dpartement, du projet. Le tout premier mot du nom devrait tre un TLD2 ( top-level
domain ) tel que dfini par le standard ISO3 3166, 1981.
Exemples :

A faire

A ne pas faire

package mypackage;

package MyPackage;

package com.mycom.mypackage;

package Com.MyCom.MyPackage;

CLASSES ET INTERFACES
Le nom des classes doit tre en minuscule, hormis les initiales des mots le composant.
Exemples :

TDL (Top -Level Domain) : suffix des noms de domaine de lInternet. Ils sont de deux types : catgorie (com,
alt, edu, info) ou pays (fr, uk, be).
3

ISO (International Standard Organization) : un rseau d'instituts nationaux de normalisation de 148 pays.

Hugo ETIEVANT

Page 12 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

A faire
class MyFavoritClass;

A ne pas faire
class myfavoritclass;

ni
class myFavoritClass;

ni
class myfavoritClass;

METHODES
Les noms des mthodes doivent tre en minuscule hormis les initiales des mots le composant
(sauf le premier).
Exemples :

A faire
public void myFavoritMethod() {

A ne pas faire
public void MyFavoritMethod() {

ni
public void myfavoritMethod() {

ni
public void myfavorithethod() {
public void closeHtmlBrowser() {

public void closeHTMLBrowser() {

Les accesseurs directs (getters et setters) des attributs dune classe doivent tre prfixs dun
get pour la lecture et dun set pour lcriture. Le suffixe doit tre le nom de lattribut.
Exemples :

A faire

A ne pas faire

public int getLevel() {

public int giveMeTheLevelValue() {

public void setLevel(int level) {

public void writeLevel(int level) {

Le prfixe is doit tre utilis par les mthodes retournant un boolen.


Exemple :

A faire
public boolean isVisible() {

Hugo ETIEVANT

A ne pas faire
public boolean canWeSeeThat() {

Page 13 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

Certains autres prfixes particuliers doivent tre utiliss : compute, find, initialize (ou
init), delete, add, close, etc. respectivement pour le calcul, la recherche, linitialisation, la
suppression, lajout, la fermeture dobjets.

ATTRIBUTS, VARIABLES ET PARAMETRES


Les attributs de classe, les variables locales comme globales ainsi que les paramtres des
mthodes doivent tre en minuscule hormis les initiales des mots le composant (sauf le
premier).
Le nom des variables doit tre le plus explicite possible sur son contenu et tre trs court,
lexception des variables temporaires. Typiquement les variables ditration de boucle doivent
porter un nom dune seule lettre : i, j, k, m, et n pour les entiers ; c, d, et e pour les
caractres ; f, x, y et z pour les flottants.
Le dollars ($) et le soulignement (_) sont proscrits.
Exemples :

A faire

A ne pas faire

for (i = 0; i < 10; i++) {

for (myVeryLongCountVar = 0;
myVeryLongCountVar < 10;
myVeryLongCountVar++) {

Car nextCar = cars.get(this.id + 1);

Car a = cars.get(this.id + 1);

float myWidth = 145.5;

float w = 145.5;

ni
float my_Width = 145.5;

Les collections dobjets doivent tre nommes au pluriel.


Exemple :

A faire

A ne pas faire

Vector accounts;

Vector account;

Collection Banks;

Collection Bank;

Object[] myObjs;

Object[] myObj;

Hugo ETIEVANT

Page 14 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

CONSTANTES
Les noms des constantes doivent tre entirement en majuscule. Le sparateur de mot est le
caractre de soulignement (underscore : _ ).
Exemples :

A faire
static final int PROMPT_LOG = 1;

A ne pas faire
static final int PROMPTLOG = 1;

ni
static final int prompt_Log = 1;

ni
static final int Prompt_Log = 1;

ni
static final int Prompt_LOG = 1;

Hugo ETIEVANT

Page 15 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

COMMENTAIRES
Les commentaires sont essentiels au code source. Ils permettent dinclure de la documentation
lintrieur mme du source en vue dune gnration automatique de documentation via
JavaDoc, de faciliter la maintenance du projet, de permettre la distribution du code,
dinactiver certaines portions de code sans pour autant le supprimer (et davoir le rcrire).
Il existe deux types de commentaires :
1. les commentaires mono ligne qui inactivent tout ce qui apparat la suite, sur la mme
ligne : //
2. les commentaires multi-lignes qui inactivent tout ce qui se trouve entre les deux
dlimiteurs, que ce soit sur une seule ligne ou sur plusieurs /* */

BLOC DE COMMENTAIRE
Exemple 1 : commenter une mthode, une classe, un attribut laide dun bloc de
commentaire
/*
* La classe MyClass fournis telles fonctionnalits
*/
public class MyClass() {

COMMENTAIRE MONO LIGNE


Exemple 2 : insertion dun commentaire afin dexpliquer le comportement du code
// Extraction de la fabrique ayant produit litem
myFab = (Fabric)fabrics.get((int)item.getFabricId());

INACTIVATION DUNE PORTION DE CODE


Exemple 3 : inactivation dune portion de code pour dbuggage
/*
// Extraction de la fabrique ayant produit litem
myFab = (Fabric)fabrics.get((int)item.getFabricId());

Hugo ETIEVANT

Page 16 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

// La fabrique supprime son dernier fils


myFab.deleteItem(myFab.getLastItem());
*/

PRIORITE ENTRE COMMENTAIRES


Il est important de ne rserver les commentaires multi-lignes quaux blocs utiles JavaDoc et
linactivation de portions de code. Les commentaires mono-ligne permettant de commenter
le reste, savoir, toute information de documentation interne relatif aux lignes de code.
Ceci afin dviter des erreurs de compilation du aux imbrications des commentaires multilignes.

Hugo ETIEVANT

Page 17 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

DECLARATIONS
VARIABLES
INDENTATION
Les variables doivent de prfrence tre dclares lignes par lignes.
Exemple :
int level;
int frameWidth;

Sauf lorsquil sagit de variables temporaires itratives pour lesquelles une dclaration globale
sur une seule et mme ligne est recommande.
Exemple :
int i, j, k;

En revanche, il est formellement interdit de dclarer des variables de types diffrents sur la
mme ligne.
Exemple :

A faire
int level;
int[] carCount;

A ne pas faire
int level, carCount[];

Lindentation peut exceptionnellement tre adapte lors de la dclaration de variables afin


den aligner les identificateurs.
Exemple :
int
float
Car
String

level;
myWidth;
niceCar;
authorName;

Les types tableaux doivent tre spcifis sur le type et non sur la variable.
Exemple :

Hugo ETIEVANT

Page 18 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

A faire
int[] carCount;

A ne pas faire
int carCount[];

INITIALISATION
Linitialisation des variables doit se faire lors de la dclaration lorsque cela est possible.
Exemple :

A faire
int level = 10;

A ne pas faire
int level;
level = 10;

EMPLACEMENT
Les variables doivent tre dclares au plus tt, sitt aprs laccolade ouvrante du bloc. Et non
pas juste avant leur utilisation dans le code.
Exemple :

A faire
void myMethod() {
int level;

A ne pas faire
void myMethod() {
println("foobar");
int level;

Une seule exception cette rgle : la structure de contrle itrative for en dehors de laquelle
la variable ditration nest point utilise.
Exemple :
for (int i = 1; i < 10; i++) {

Une variable ne peut porter le mme nom quune autre situe dans un bloc de niveau
suprieur.
Exemple :

Hugo ETIEVANT

Page 19 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

A faire
int level;
...
void myMethod() {
int otherLevel;

A ne pas faire
int level;
...
void myMethod() {
int level;

METHODES
Les noms des mthodes sont accols la parenthse ouvrante listant les paramtres. Aucun
espace ne doit y tre insr.
Exemple :

A faire
void myMethod() {

A ne pas faire
void myMethod () {

BLOCS
Tout bloc est dlimit par des accolades. Laccolade ouvrante doit tre place en fin de ligne,
la suite dun espace, aprs linstruction/mthode/classe crant le bloc. Laccolade fermante
doit tre place en dbut dune ligne vierge la suite de la dernire instruction du bloc.
Exemples :

A faire

A ne pas faire

void myMethod() {
int level;
...
}

void myMethod()
{
int level;
...
}

while (true) {
println("foobar");
}

while (true) { println("foobar"); }

for (i = 1; i < 10; i++) {


println("%d\n", i);
}

for (i = 1; i < 10; i++){


println("%d\n", i);
}

ORDRE
Lordre de dclaration des entits du code source doit tre le suivant :

Hugo ETIEVANT

Page 20 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

1. les attributs de la classe


a. en premier les statiques (static)
b. en deuxime les publiques (public)
c. ensuite les protgs (protected)
d. et enfin les privs (private)
2. les mthodes
a. en premier les statiques
b. en deuxime les publiques
c. ensuite les protges
d. et enfin les prives

Hugo ETIEVANT

Page 21 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

INSTRUCTIONS
SIMPLES INSTRUCTIONS
Une ligne de code ne peut contenir quune seule instruction (ou partie de celle-ci, si elle est
trop longue).
Exemple :

A faire
count++;
i--;
println("foobar");

A ne pas faire
count++; i--; println("foobar");

INSTRUCTION DE RETOUR
Linstruction de retour return peut ne retourner aucune valeur.
Cette instruction nutilise pas les parenthses, sauf, si elles sont syntaxiquement
indispensables.
Exemples :

A faire

A ne pas faire

return 50;

return (50);

return box.getWidth();

return (box.getWidth());

return ((size < MIN_SIZE) ? size :


MIN_SIZE);

return (size < MIN_SIZE) ? size :


MIN_SIZE;

STRUCTURES DE CONTROLE
EXPRESSION TERNAIRE
Il y a trois manires dcrire lexpression ternaire.

Hugo ETIEVANT

Page 22 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

Exemple 1 :
resultExpr = (myVeryLongExpression) ? myFirstExpr : mySecondExpr;

Exemple 2 :
resultExpr = (myVeryLongExpression) ? myFirstExpr
: mySecondExpr;

Exemple 3 :
resultExpr = (myVeryLongExpression)
? myFirstExpr
: mySecondExpr;

BOUCLE FOR
Syntaxes gnrales :
for (initialisation; condition; modification) {
instructions;
}
for (initialisation; condition; modification);

BOUCLE WHILE
Syntaxes gnrales :
while (condition) {
instructions;
}
while (condition);

BOUCLE DO
Syntaxe gnrale :
do {
instructions;
} while (condition);

CONDITION IF
Syntaxes gnrales :
if (condition) {
instructions;
}
if (condition) {
instructions;
} else {
instructions;
}
if (condition) {
instructions;
} else if (condition) {
instructions;
} else {
Hugo ETIEVANT

Page 23 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

instructions;
}

CONDITION SWITCH
Les cas case dun switch peuvent exceptionnellement ne pas incrmenter dun niveau
lindentation de linstruction switch. Cependant, par soucis dhomognit, il est
recommand daugmenter lindentation des cas puisquils se trouvent lintrieur dun
nouveau bloc.
Syntaxe gnrale :
switch (condition) {
case valeur1:
instructions;
// passe travers
case valeur2:
instructions;
break;
case valeur3:
instructions;
break;
default:
instructions;
break;
}

ou bien :
switch (condition) {
case valeur1:
instructions;
// passe travers
case valeur2:
instructions;
break;
case valeur3:
instructions;
break;
default:
instructions;
break;
}

Les cas ne se terminant par un saut break doivent spcifier un commentaire rappelant que
lexcution se poursuit.
Le block dinstructions dun cas na pas besoin dtre encadr par des accolades. Cependant,
par soucis dhomognit, les accolades peuvent tre rajoutes autour de ce bloc. Le saut sera
alors inscrit la suite de laccolade fermante du bloc.
Syntaxe :
switch (condition) {
case valeur1: {

Hugo ETIEVANT

Page 24 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

instructions;
} // passe travers
case valeur2: {
instructions;
} break;
case valeur3: {
instructions;
} break;
default: {
instructions;
} break;
}

Toute instruction switch doit avoir un cas par dfaut. Car il est rare de penser tous les cas
possibles y compris ceux errons.
Linstruction de saut est obligatoire la fin du cas par dfaut. Cela est redondant mais protge
dune erreur en cas de rajout dautres cas par la suite.

EXCEPTION TRY-CATCH
Les mots rservs catch et finally doivent tre encadrs de laccolade fermante du mot
rserv qui le prcde et de laccolade ouvrante de son propre bloc.
Syntaxes gnrales :
try {
instructions;
} catch (ExceptionClass e) {
instructions;
}
try {
instructions;
} catch (ExceptionClass1 e1) {
instructions;
} catch (ExceptionClass2 e2) {
instructions;
}
try {
instructions;
} catch (ExceptionClass e) {
instructions;
} finally {
instructions;
}

Hugo ETIEVANT

Page 25 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

BONNES PRATIQUES DE
DEVELOPPEMENT
Les best-pratices ou design-pattern sont en construction.
Vous les dcouvrirez loccasion de la future version de ce document.

Hugo ETIEVANT

Page 26 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

LIENS
QUELQUES SITES UTILES
1. Le CyberZode Qui Frtille
http://cyberzoide.developpez.com
Webzine de vulgarisation des sciences et des nouvelles technologies.
2. Developpez
http://www.developpez.com
Club d'entraide des dveloppeurs francophones
3. Java Technology
http://java.sun.com

QUELQUES DOCUMENTS DE REFERENCE (EN ANGLAIS)


1. Code Conventions for the Java Programming Language, Sun
http://java.sun.com/docs/codeconv/
2. Coding Standards for Java, Nejug
http://www.nejug.org/standards.pdf

Hugo ETIEVANT

Page 27 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

ANNEXE 1
LES MOTS RESEVES DU LANGAGE JAVA
Le tableau suivant prsente tous les mots rservs du langage Java. Ils ne peuvent donc tre
utiliss en tant quidentifiant.

Mot rserv

Catgorie

Description

abstract

Qualifieur

boolean

Type primitif

break

Structure de contrle

byte

Type primitif

case

Structure de contrle

catch

Structure de contrle

char

Type primitif

class
const *
continue

Structure de contrle

default

Structure de contrle

do

Structure de contrle

double

Type primitif

else

Structure de contrle

extends
false

Valeur

Dfinie une classe ou mthode abstraite dont


limplmentation reste effectuer au travers dune
classe fille.
Type numr dont les valeurs possibles sont : true
(vrai) ou false (faux).
Au sein dune structure conditionnelle switch
dfini un saut vers la fin de la structure afin dviter
le test des cas suivants. Au sein dune structure
rptitive telle que while, do ou for, termine
directement la boucle. Au sein dun bloc, sort
immdiatement du bloc en cours dexcution.
Type entier dont la valeur est comprise entre 27-1 et
27 : [-128,127].
Au sein dune structure conditionnelle switch,
dfini un cas de test.
Au sein dune structure dexception try, dfini un
cas dexception.
Type caractre dont la valeur est celle parmi la table
ASCII du systme.
Dfinie une classe.
Dfinie une constante. Non utilis.
Au sein dune structure rptitive while, do ou for
passe directement litration suivante.
Au sein dune structure conditionnelle switch
dfinie le cas de test par dfaut.
Structure rptitive effectuant au moins un
parcours. Rptition tant que la condition est vrai.
Type flottant dont la valeur est comprise entre (2-252
)21023 et 2-1074.
Au sein dune structure conditionnelle if, dfinie
une alternative la condition initiale.
Dfinition de lhritage. Spcifie la classe mre.
Une des valeurs possible du type boolean.

Hugo ETIEVANT

Page 28 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

final

Qualifieur

finally

Structure de contrle

float

Type primitif

for
goto *
if
implements
import
instanceof

Structure de contrle
Structure de contrle
Structure de contrle

int

Type primitif

interface
long

Type primitif

native

Qualifieur

new
null

Valeur

package
private

Qualifieur

protected

Qualifieur

public

Qualifieur

return
short

Type primitif

static

Qualifieur

strictfp **

Qualifieur

super
switch
synchronized

Structure de contrle
Qualifieur

this
throw
throws

Hugo ETIEVANT

Spcifie que la classe/mthode/variable ne peut


changer ni tre drive.
Au sein dune structure try, spcifie un bloc
dinstructions toujours excuts mme si
lexception nest jamais leve.
Type flottant dont la valeur est comprise entre (2-223
)2127 et 2-149.
Structure rptitive.
Saut vers un label. Non utilis.
Structure conditionnelle.
Spcifie linterface que la classe implmente.
Spcifie le(s) package(s) requis par la classe.
Ralise au cours de lexcution un contrle sur le
type rel dune variable.
Type entier dont la valeur est comprise entre 231-1
et 231.
Dfini une interface.
Type entier dont la valeur est comprise entre 263-1
et 263.
Dfini une mthode qui est implmente dans une
bibliothque annexe propre la plateforme de
dveloppement (et qui donc nest pas portable).
Cration dune nouvelle instance dune classe par
appel au constructeur.
Valeur par dfaut lorsquun objet nest pas
instanci.
Spcifie le package de la classe.
Rend priv (inaccessible depuis les autres classes, y
compris fille) la classe, mthode, variable.
Rend protge (accessible seulement depuis les
autres classes non filles) la classe, mthode,
variable.
Rend public (accessible tous) la classe, mthode,
variable.
Retour dune valeur depuis une mthode.
Type entier dont la valeur est comprise entre 215-1
et 215.
Cration dun unique exemplaire de la mthode,
variable.
Dfini une classe, interface, mthode strictement
conforme au type dfini la compilation.
Fait rfrence au constructeur de la classe mre.
Structure conditionnelle.
Dfini une mthode sur laquelle des verrous
permettront la synchronisation des diffrents
threads dexcution.
Fait rfrence lobjet instanci.
Dclenche une exception.
Spcifie la liste des exceptions quune mthode est

Page 29 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

transient

Qualifieur

true
try
void
volatile

Valeur
Structure de contrle
Type primitif
Qualifieur

while

Structure de contrle

susceptible de lever.
Dfini un attribut transitoire ne pas sauvegarder
lors de la srialisation dun objet.
Lune des valeur possible du type boolean.
Structure de contrle des exceptions.
Type indfini.
Dfini un attribut dont laccs par diffrents threads
sera ordonn.
Structure de contrle rptitive sexcutant 0 ou n
fois.

* : mot rserv non utilis


** : mot rserv introduit en Java2

Hugo ETIEVANT

Page 30 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

ANNEXE 2
LES QUALIFIEURS JAVA
Les qualifieurs sont des mots rservs du langage qui permettent de spcifier la nature des
entits (classe, interface, mthode, attribut) quils qualifient. Ils se positionnent sur la mme
ligne mais avant la dfinition de lentit.
Le tableau suivant numre les qualifieurs Java, leur porte et les dcrit succinctement.
Qualifieurs
abstract

final

Classe
X

Interface Mthode
X
X

native

private

protected

public

static
strictfp
synchonized

transient

volatile

Hugo ETIEVANT

X
X

X
X

Attribut Description
Entit abstraite dont
limplmentation reste effectuer
au travers dune classe fille.
X
Entit ne pouvant changer ni tre
drive.
Entit implmente dans une
bibliothque annexe propre la
plateforme de dveloppement (et
qui donc nest pas portable).
X
Entit prive (inaccessible depuis
les autres classes, y compris
fille).
X
Entit protge (accessible
seulement depuis les autres
classes non filles.
X
Entit publique (accessible
tous).
X
Cration dun unique exemplaire
de lentit.
Entit strictement conforme au
type dfini la compilation.
Entit sur laquelle des verrous
permettront la synchronisation
des diffrents threads
dexcution.
X
Entit transitoire ne pas
sauvegarder lors de la
srialisation dun objet.
X
Entit dont laccs par diffrents
threads sera ordonn.

Page 31 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

ANNEXE 3
LES COMMENTAIRES JAVADOC
JavaDoc est loutil de gnration automatique de documentation le plus rpandu. Cette annexe
prsente lensemble des clauses JavaDoc ainsi que leur porte.
Clause

Package Classe et Constructeur Attribut Description


interface et mthode
@author
X
X
Nom de lauteur
@deprecated
X
X
X
Commentaire dexplication sur
la premption dune entit
@exception
X
Synonyme de @throws
@param
X
Description dun paramtre de
la mthode
@return
X
Description de la valeur
retourne
@see
X
X
X
X
Rfrence vers un concept, une
URL, une autre entit de la
documentation
@serial
X
X
X
Description dune entit
srialisable
@serialData
X
Description dun attribut
srialisable
@serialField
X
Description dun attribut
srialisable
@since
X
X
X
X
Version du projet laquelle a
t introduite lentit
@throws
X
Description dune exception
susceptible dtre leve
@version
X
X
Version de lentit
{@docRoot}
X
X
X
X
Rfrence la racine du
rpertoire dexport de la
documentation gnre
{@inheritDoc}
X
Rfrence lentit de laquelle
on hrite
{@link}
X
X
X
X
Rfrence vers une autre entit
de la documentation
{@linkplain}
X
X
X
X
Rfrence non active vers une
autre entit de la
documentation
{@value}
X
Valeur possible de lattribut
Hugo ETIEVANT

Page 32 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

Exemple de fichier source comment avec JavaDoc :


package com.eliane;
import java.util.*;

/**
* This class provide a persistant Musclor object.
* @author Hugo ETIEVANT
* @see ElianeCDC.doc
* @see <a href="{@docRoot}/spec.html">Eliane Spec</a>
* @since 1.3
* @version 2.7
*/
class persistantMusclorImpl() extend Musclor implement persistantMusclor {

/**
* Level of force of the Musclor object
* @serialField This field is serializable
*/
private int level;

/**
* Temporary id of log file
*/
static public transient String logId;

/**
* @throws IOException If an input or output exception occurred
* @deprecated Replaced by {@link #Musclor(int)}
*/
public persistantMusclorImpl() throws IOException {
super();
}

/**
* @param level Level of force
* @throws IOException If an input or output exception occurred
* @see #Musclor()
* @serialData level Level is serializable
*/
public persistantMusclorImpl(int level) throws IOException {
super();
this.level = level;
}

...
}

Hugo ETIEVANT

Page 33 sur 34

Guide francophone des conventions de codage pour la programmation en langage Java.

INDEX
A

JavaDoc.............................................16, 32

accesseur................................................. 13
acronyme ................................................ 12
Ant ............................................................ 7

B
break ....................................... Voir Switch

Brivet..................................................... 6
build.xml ................................................ 7
bytecode.................................................... 7

Ligne blanche..........................................10
log .............................................................7
M
makefile ...................................................7

O
oprateur....................................................9

case ......................................... Voir Switch

performance ..............................................5

Catch............................................. Voir Try


collection ................................................ 14
commentaire ........................................... 16
Consistance............................................... 6
cycle de vie ............................................... 5
D
Do ........................................................... 23
E
Equilibre ................................................... 5
Espace..................................................... 10
Expression ternaire ................................. 22

Q
qualifieurs................................................31
R
README .......................................................7
return .....................................................22

S
structure de contrle..................................9
Switch .....................................................24
T

For........................................................... 23

Tabulation .................................................9
TLD.........................................................12
top-level domain.......................... Voir TLD
Try...........................................................25

identifiant................................................ 12
IDL............................................................ 7
If 23
Indentation .......................................... 9, 18

underscore...............................................15
Uniformit.................................................6

While.......................................................23

F
finally ........................................ Voir Try

Java2 ....................................................... 30

Hugo ETIEVANT

Page 34 sur 34

Vous aimerez peut-être aussi