05/08/2026
📝 LEÇON 10 : Éviter les encodages et les jeux de mots
(Chapitre 2 – "Clean Code" de Robert C. Martin)
Bonjour à tous ! 👋
On termine le Chapitre 2 avec deux dernières règles importantes : ÉVITER LES ENCODAGES et ÉVITER LES JEUX DE MOTS.
Aujourd'hui : COMMENT NE PAS COMPLIQUER SES NOMS. 🎯
🎯 C'est quoi un encodage ?
Robert C. Martin écrit :
"Nous avons assez d'encodages à gérer sans en ajouter davantage. Coder le type ou la portée dans les noms ajoute simplement un fardeau de déchiffrage supplémentaire."
En clair : NE PAS METTRE D'INFORMATIONS INUTILES DANS LES NOMS.
💻 Exemple 1 – La notation hongroise (Hungarian Notation)
❌ MAUVAIS NOM
String m_sName; // "m_" signifie "membre"
int iCount; // "i" signifie "int"
float fPrice; // "f" signifie "float"
Pourquoi c'est mal ?
Les IDE modernes te montrent déjà le type
C'est du BRUIT visuel
Si tu changes le type, tu dois renommer
Les débutants sont perdus
✅ BON NOM
String name;
int count;
float price;
C'est CLAIR. Pas besoin de code.
💻 Exemple 2 – Les préfixes de membres
❌ MAUVAIS NOM
public class Part {
private String m_description;
void setName(String name) {
m_description = name;
}
}
Le "m_" ne sert à rien.
Les IDE modernes colorent les variables différemment.
✅ BON NOM
public class Part {
private String description;
void setName(String name) {
this.description = name;
}
}
"this.description" montre clairement que c'est un membre.
💻 Exemple 3 – Les interfaces et implémentations
❌ MAUVAIS NOM
interface IShapeFactory {
// ...
}
class ShapeFactory implements IShapeFactory {
// ...
}
Le "I" devant l'interface est INUTILE.
✅ BON NOM
interface ShapeFactory {
// ...
}
class ShapeFactoryImpl implements ShapeFactory {
// ...
}
Ou encore mieux :
interface ShapeFactory {
// ...
}
class DefaultShapeFactory implements ShapeFactory {
// ...
}
🎯 C'est quoi un jeu de mots ?
Robert C. Martin écrit :
"Évitez d'utiliser le même mot pour deux usages différents. Utiliser le même terme pour deux idées différentes est essentiellement un jeu de mots."
En clair : NE PAS UTILISER LE MÊME NOM POUR DES CHOSES DIFFÉRENTES.
💻 Exemple 4 – Le mot "add"
❌ MAUVAIS NOM
// Classe 1
public void add(int a, int b) {
return a + b; // additionne deux nombres
}
// Classe 2
public void add(Product product) {
products.add(product); // ajoute à une liste
}
Pourquoi c'est mal ?
Le mot "add" est utilisé pour DEUX CHOSES DIFFÉRENTES :
Additionner des nombres
Ajouter à une collection
✅ BON NOM
// Classe 1
public int sum(int a, int b) {
return a + b; // additionne deux nombres
}
// Classe 2
public void append(Product product) {
products.add(product); // ajoute à une liste
}
Maintenant, chaque mot a un sens UNIQUE.
💻 Exemple 5 – Le mot "get"
❌ MAUVAIS NOM
// Classe 1
public String getEmployee() {
return employeeName; // retourne un nom
}
// Classe 2
public Employee getEmployee() {
// va chercher l'employé dans la base de données
return employee; // retourne un objet
}
Le mot "get" est utilisé pour DEUX CHOSES DIFFÉRENTES.
C'est un PUN (jeu de mots).
✅ BON NOM
// Classe 1
public String getEmployeeName() {
return employeeName;
}
// Classe 2
public Employee retrieveEmployee() {
// va chercher l'employé dans la base de données
return employee;
}
Maintenant, chaque mot a un sens UNIQUE.
🎯 Les règles d'or
✅ N'ENCODE PAS le type dans le nom
✅ N'ENCODE PAS la portée dans le nom
✅ Utilise "this" pour les membres (au lieu de "m_")
✅ NE PUN PAS (un même mot pour plusieurs usages)
✅ Un mot pour un CONCEPT
✅ Des mots différents pour des concepts différents
📚 Récapitulatif du Chapitre 2
Leçon Sujet
Leçon 6 Des noms qui révèlent l'intention
Leçon 7 Éviter la désinformation
Leçon 8 Faire des distinctions significatives
Leçon 9 Des noms prononçables et recherchables
Leçon 10 Éviter les encodages et les jeux de mots
🎯 Le défi
Regarde ton code. Trouve UN nom :
Qui a un préfixe inutile (m_, i_, f_, I)
Ou qui est un "jeu de mots" (un même mot pour plusieurs usages)
Remplace-le par un nom PLUS CLAIR.
Avant / Après ? Partage en commentaire ! 👇
💬 Discussion
As-tu déjà vu des codes avec des préfixes bizarres comme "m_" ou "i_" ?
Raconte-nous en commentaire ! 👇
📖 Prochaine leçon : Chapitre 3 – Les fonctions !