2.4Bonnes pratiques d'écriture du code
2.4.1 – Indentation et lisibilité
L'indentation et la lisibilité sont essentielles pour écrire du code professionnel. Un code bien indenté est plus facile à lire, à comprendre et à maintenir. Cette section vous apprendra les conventions d'indentation en Java et comment améliorer la lisibilité de votre code.
📐 Qu'est-ce que l'indentation ?
L'indentation consiste à ajouter des espaces ou des tabulations au début des lignes pour montrer la structure hiérarchique du code. En Java, chaque niveau d'imbrication (classe, méthode, bloc if, boucle, etc.) doit être indenté.
✅ Indentation correcte
Exemple : Code bien indenté
public class Exemple {
public static void main(String[] args) {
int x = 10;
int y = 20;
if (x > y) {
System.out.println("x est plus grand");
} else {
System.out.println("y est plus grand");
}
}
}
- Le contenu de la classe est indenté de 4 espaces
- Le contenu de la méthode main() est indenté de 4 espaces supplémentaires
- Le contenu du bloc if/else est indenté de 4 espaces supplémentaires
- La structure hiérarchique est clairement visible
❌ Indentation incorrecte
Exemple : Code mal indenté (à éviter !)
public class Exemple {
public static void main(String[] args) {
int x = 10;
int y = 20;
if (x > y) {
System.out.println("x est plus grand");
} else {
System.out.println("y est plus grand");
}
}
}
- Difficile de voir la structure du code
- On ne distingue pas les niveaux d'imbrication
- Le code est difficile à lire et à comprendre
📏 Conventions d'indentation en Java
1. Utiliser 4 espaces (recommandé)
La convention Java recommande d'utiliser 4 espaces par niveau d'indentation. Certains développeurs utilisent des tabulations, mais les espaces sont plus universels.
2. Indenter chaque niveau d'imbrication
Exemple : Niveaux d'indentation
public class Exemple { // Niveau 0 (pas d'indentation)
private int x; // Niveau 1 (4 espaces)
public void methode() { // Niveau 1 (4 espaces)
int y = 10; // Niveau 2 (8 espaces)
if (y > 5) { // Niveau 2 (8 espaces)
System.out.println("OK"); // Niveau 3 (12 espaces)
if (y > 10) { // Niveau 3 (12 espaces)
System.out.println("OK"); // Niveau 4 (16 espaces)
}
}
}
}
3. Aligner les accolades
Il existe deux styles d'accolades en Java. Le style recommandé est le style K&R (accolade ouvrante sur la même ligne) :
Style K&R (recommandé) :
public class Exemple {
public void methode() {
if (condition) {
// code
}
}
}
Style Allman (moins courant) :
public class Exemple
{
public void methode()
{
if (condition)
{
// code
}
}
}
📖 Améliorer la lisibilité
1. Espaces autour des opérateurs
Bien :
int resultat = a + b * c;
if (x > 10 && y < 20) {
// code
}
Moins lisible :
int resultat=a+b*c;
if(x>10&&y<20){
// code
}
2. Lignes vides pour séparer les sections
Bien :
public class Exemple {
private int x;
private int y;
public void methode1() {
// code
}
public void methode2() {
// code
}
}
Moins lisible :
public class Exemple {
private int x;
private int y;
public void methode1() {
// code
}
public void methode2() {
// code
}
}
3. Limiter la longueur des lignes
Les lignes trop longues sont difficiles à lire. La convention Java recommande de limiter les lignes à 80-120 caractères maximum.
Ligne trop longue (à éviter) :
System.out.println("Ceci est une ligne très très très très très très très très très très très très très très longue qui dépasse la limite recommandée");
Mieux :
System.out.println("Ceci est une ligne raisonnable " +
"qui peut être divisée sur plusieurs lignes " +
"si nécessaire");
4. Noms de variables descriptifs
Bien :
int ageUtilisateur = 25;
double prixTotal = 99.99;
String nomComplet = "Jean Dupont";
À éviter :
int a = 25;
double p = 99.99;
String n = "Jean Dupont";
🎯 Règles d'or pour la lisibilité
- Indentation cohérente : Utilisez toujours 4 espaces par niveau
- Espaces autour des opérateurs :
a + bplutôt quea+b - Lignes vides : Utilisez-les pour séparer les sections logiques
- Noms descriptifs : Utilisez des noms qui expliquent ce que fait la variable
- Longueur des lignes : Limitez à 80-120 caractères
- Cohérence : Suivez le même style dans tout votre code
💡 Points clés à retenir
- Indentation : 4 espaces par niveau d'imbrication
- Style K&R : Accolade ouvrante sur la même ligne
- Espaces : Autour des opérateurs pour la lisibilité
- Lignes vides : Pour séparer les sections logiques
- Noms descriptifs : Variables et méthodes avec des noms clairs
- Longueur : Limiter les lignes à 80-120 caractères
- Cohérence : Suivre le même style partout
Ctrl+Alt+L, Eclipse : Ctrl+Shift+F). Cela vous aidera à maintenir un style cohérent.
2.4.2 – Commentaires
Les commentaires sont des annotations dans le code qui ne sont pas exécutées par Java. Ils servent à expliquer le code, à documenter les fonctionnalités, et à faciliter la compréhension pour vous-même et pour les autres développeurs. Cette section vous apprendra à utiliser efficacement les commentaires en Java.
💬 Types de commentaires en Java
Java offre trois types de commentaires :
1. Commentaire sur une ligne (//)
Le commentaire sur une ligne commence par // et s'étend jusqu'à la fin de la ligne :
Exemple : Commentaire sur une ligne
int age = 25; // Âge de l'utilisateur
int x = 10; // Variable temporaire
// Cette ligne est entièrement un commentaire
System.out.println("Hello"); // Affiche "Hello"
2. Commentaire sur plusieurs lignes (/* */)
Le commentaire sur plusieurs lignes commence par /* et se termine par */ :
Exemple : Commentaire sur plusieurs lignes
/*
* Ceci est un commentaire
* qui s'étend sur
* plusieurs lignes
*/
int x = 10;
/* Ceci est aussi un commentaire
sur plusieurs lignes */
3. Commentaire de documentation (/** */)
Le commentaire de documentation (JavaDoc) commence par /** et se termine par */. Il est utilisé pour générer automatiquement de la documentation :
Exemple : Commentaire JavaDoc
/**
* Calcule la somme de deux nombres.
*
* @param a Le premier nombre
* @param b Le deuxième nombre
* @return La somme de a et b
*/
public int additionner(int a, int b) {
return a + b;
}
✅ Quand utiliser les commentaires
1. Expliquer le "pourquoi", pas le "comment"
Les commentaires doivent expliquer pourquoi le code fait quelque chose, pas comment il le fait (le code lui-même devrait être clair) :
Bien :
// Utiliser une multiplication par 2 au lieu d'une addition
// pour éviter les problèmes de précision avec les nombres décimaux
double resultat = nombre * 2;
À éviter :
// Multiplie nombre par 2
double resultat = nombre * 2; // Le code est déjà clair, pas besoin de commentaire
2. Documenter les fonctions complexes
Exemple : Commenter un algorithme complexe
/**
* Calcule le plus grand commun diviseur (PGCD) de deux nombres
* en utilisant l'algorithme d'Euclide.
*
* @param a Premier nombre
* @param b Deuxième nombre
* @return Le PGCD de a et b
*/
public int pgcd(int a, int b) {
// Algorithme d'Euclide : on remplace a par b et b par a % b
// jusqu'à ce que b soit égal à 0
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
3. Expliquer les décisions de conception
Exemple : Expliquer une décision
// Utiliser ArrayList au lieu de tableau fixe
// car la taille de la liste peut varier dynamiquement
List noms = new ArrayList<>();
4. Marquer du code temporaire ou à améliorer
Exemple : Code temporaire
// TODO : Optimiser cet algorithme pour les grandes listes
// FIXME : Gérer le cas où la liste est vide
// HACK : Solution temporaire, à refactorer plus tard
❌ Quand ne PAS utiliser de commentaires
1. Ne pas commenter l'évident
À éviter :
int age = 25; // Déclare une variable age et lui assigne 25
String nom = "Jean"; // Déclare une variable nom et lui assigne "Jean"
System.out.println("Hello"); // Affiche "Hello"
2. Ne pas utiliser de commentaires pour masquer du mauvais code
Si vous avez besoin de beaucoup de commentaires pour expliquer votre code, c'est peut-être que le code lui-même devrait être amélioré :
Mieux vaut améliorer le code :
// Au lieu de :
// Calcule le prix avec la réduction de 10% si le client est premium
double prixFinal = prix * 0.9;
// Écrivez :
double prixFinal = calculerPrixAvecReduction(prix, estClientPremium);
📝 Bonnes pratiques pour les commentaires
- Être concis : Les commentaires doivent être courts et pertinents
- Rester à jour : Mettez à jour les commentaires quand vous modifiez le code
- Utiliser JavaDoc : Pour documenter les classes et méthodes publiques
- Éviter les commentaires redondants : Ne répétez pas ce que le code dit déjà
- Utiliser un langage clair : Écrivez en français (ou dans la langue de votre équipe)
- Formater proprement : Alignez les commentaires pour la lisibilité
📚 JavaDoc : Documentation automatique
JavaDoc est un outil qui génère automatiquement de la documentation HTML à partir de commentaires spéciaux. C'est la norme pour documenter les API Java :
Exemple complet de JavaDoc :
/**
* Représente une personne avec un nom et un âge.
*
* @author Jean Dupont
* @version 1.0
* @since 2024
*/
public class Personne {
private String nom;
private int age;
/**
* Constructeur qui crée une nouvelle personne.
*
* @param nom Le nom de la personne
* @param age L'âge de la personne (doit être positif)
*/
public Personne(String nom, int age) {
this.nom = nom;
this.age = age;
}
/**
* Retourne le nom de la personne.
*
* @return Le nom de la personne
*/
public String getNom() {
return nom;
}
/**
* Calcule l'âge dans 10 ans.
*
* @return L'âge de la personne dans 10 ans
*/
public int ageDans10Ans() {
return age + 10;
}
}
💡 Points clés à retenir
- Commentaire ligne :
//pour un commentaire sur une ligne - Commentaire bloc :
/* */pour un commentaire sur plusieurs lignes - JavaDoc :
/** */pour la documentation automatique - Expliquer le "pourquoi" : Pas le "comment" (le code doit être clair)
- Documenter les fonctions : Utilisez JavaDoc pour les méthodes publiques
- Rester à jour : Mettez à jour les commentaires avec le code
- Éviter l'évident : Ne commentez pas ce qui est déjà clair