Conventions de codage

publicité
Informatique / Programmation
Programmation orientée objet avec Java
15 : Conventions de codage
Jacques Bapst
[email protected]
Java / Conventions de codage
Pourquoi des conventions de codage ?
 Les fichiers sources d'un programme sont destinés à deux types
de lecteurs : l'humain et la machine (le compilateur notamment).
• Pour le compilateur : "a.b(c)"
vaut bien
"myFile.println(currentTime)"
 Les conventions de codage (Style Guidelines) ont pour but
d'améliorer, pour les humains, la lisibilité des fichiers sources
en respectant certaines règles qui ne sont pas imposées par le
langage (choix des identificateurs, mise en page, …).
 Il existe des conventions plus ou moins contraignantes.
 Un certain nombre de conventions générales (proposées par Sun)
sont adoptées par la très grande majorité des développeurs Java.
 D'autres (généralement plus contraignantes) sont imposées dans le
cadre de certains projets afin de garantir une certaine homogénéité
des codes sources indépendamment de leur auteur (et assurer une
stabilité dans le temps).
EIA-FR / Jacques Bapst
PR1_15
2
Java / Conventions de codage
Pourquoi des conventions de codage ?
 Le respect de certaines conventions générales facilite grandement
la lecture du code source :
• Reconnaissance plus rapide de la structure du code
(on se retrouve en terrain connu)
• Identification rapide de certaines entités par leur convention
d'écriture (constantes, classes, …)
 Un code source est écrit une fois et généralement lu à de
nombreuses reprises (parfois longtemps après son écriture et
souvent par des lecteurs différents).
Il vaut donc la peine d'investir un peu de temps au moment de son
écriture afin de faciliter sa lecture et sa compréhension ultérieure.
 Certains éditeurs offrent des aides pour la mise en page du code
source et le respect de certaines règles de codage.
 Les conventions proposées par Oracle :
www.oracle.com/technetwork/java/codeconventions-150003.pdf
EIA-FR / Jacques Bapst
PR1_15
3
Java / Conventions de codage
Mise en page
 Les commentaires doivent être alignés au niveau d'indentation
du code qui suit (pas de commentaires qui brisent la structure du code
en débordant dans la marge d'indentation).
 Ne pas dépasser (env.) 80 caractères par lignes (pour éviter le
scrolling horizontal et les problèmes d'impression).
 Une seule instruction par ligne (sauf exceptions).
 Déclarer de préférence les variables locales au début des méthodes.
 Décomposer le code des méthodes trop longues (celles qui ne
tiennent pas sur une page imprimée).
if (a > b) {
 TOUJOURS bien indenter !
• Accolade ouvrante placée en fin de ligne
• Indentation de 2 ou 4 espaces
• Accolade fermante seule sur la ligne et
alignée sur le début de la ligne contenant
l'accolade ouvrante qui lui correspond
nb = 1;
}
else {
nb = -1;
ok = false;
}
 Aligner les instructions lorsque cela a un sens (lisibilité).
EIA-FR / Jacques Bapst
PR1_15
4
Java / Conventions de codage
Commentaires
 Pour les commentaires généraux utiliser de préférence la notation
"// texte" (même pour les commentaires qui s'étendent sur plusieurs
lignes).
 Utiliser la notation "/* texte */" pour inactiver temporairement
une portion de code.
 Pour les applications (ou librairies) d'une certaine envergure, des
commentaires de documentation ("/** texte */") devraient
précéder chaque classe et chaque membre public (champs et
méthodes) de la classe.
 Pour les exercices, on pourra se contenter d'un en-tête précédant
chaque méthode (au minimum une ligne séparatrice).
 Inutile d'ajouter des commentaires triviaux :
int counter;
i++;
EIA-FR / Jacques Bapst
// Variable compteur
// i = i + 1
PR1_15
5
Java / Conventions de codage
Choix des identificateurs [1]
 D'une manière générale, les identificateurs doivent être autodescriptifs sans toutefois être trop longs (< ~30 caractères).
 Les variables temporaires peuvent faire exception à cette règle.
Par exemple les compteurs de boucle sont fréquemment déclarés
avec un seul caractère (traditionnellement i, j, k, m, n pour les entiers).
 Pour les identificateurs composés de plusieurs mots on adoptera
généralement la notation dite Mixed-Case ou Camel-Case où les
mots sont écrits en minuscules exceptée la première lettre des mots
lors de la transition d'un mot à l'autre (la première lettre du premier mot
pouvant être en majuscule ou en minuscule selon les cas).
aMixedCaseIdentifier
SomeOther
 Dans la notation Mixed-Case on n'utilise généralement pas d'autres
caractères de séparation.
EIA-FR / Jacques Bapst
PR1_15
6
Java / Conventions de codage
Choix des identificateurs [1]
Type
d'identificateur
Convention de nommage
Packages
Uniquement des mots en minuscules séparés com.ibm.javadev
par des points (niveaux hiérarchiques).
ch.eif.project.i02
Si possible, utilisation d'URL inversé.
Classes
Un ou plusieurs noms (substantifs).
Notation Mixed-Case (Camel-Case) avec
première lettre en majuscule.
Raster
StringTokenizer
Interfaces
Un ou plusieurs nom ou adjectifs.
Notation Mixed-Case (Camel-Case) avec
première lettre en majuscule.
Printable
ActionListener
Méthodes
(procédure)
Un verbe (év. avec compléments)
Notation Mixed-Case (Camel-Case) avec
première lettre en minuscule.
runProcess()
draw()
Méthodes
(fonctions)
Un ou plusieurs noms ou noms qualifiés
(éventuellement précédés de get ou is).
Notation Mixed-Case (Camel-Case) avec
première lettre en minuscule.
maxWidth()
isVisible()
EIA-FR / Jacques Bapst
Exemple
PR1_15
7
Java / Conventions de codage
Choix des identificateurs [2]
Type
d'identificateur
Convention de nommage
Exemple
Champs
Variables locales
Paramètres
Un ou plusieurs noms ou noms qualifiés.
Notation Mixed-Case (Camel-Case) avec
première lettre en minuscule.
position
maxSpeed
Constantes
(static final)
Un ou plusieurs noms ou noms qualifiés.
Mots en majuscules séparés par le caractère
souligné ('_').
PI
MAX_LENGTH
Énumérations
(enum)
Un ou plusieurs noms ou noms qualifiés.
Mots en majuscules séparés par le caractère
souligné ('_').
GREEN
ROTATION_MODE
Types génériques
Une seule lettre, en majuscule.
(<…>)
EIA-FR / Jacques Bapst
<K, V>
PR1_15
8
Téléchargement