Introduction – Découvrez la notion de qualité du code
Code pourri, les conséquences d’une qualité insuffisante
La dette technique
Qu’est-ce que le Clean Code ?
Ecoles de pensées
La règle du boy scout
Règles de nommage – Choisissez les bons mots
Utiliser des noms révélateurs d’intention
Eviter la désinformation
Faire des distinctions significatives
Utiliser des noms prononçables
Eviter l’encodage
Eviter la cartographie mentale
Noms de classes, méthodes et domaines
Un nom par concept
Pas de jeux de mots
Qualité des fonctions – Ecrivez des fonctions propres
Niveau d’abstraction
Inverser les déclarations
Noms de fonctions
Arguments et paramètres
Effets collatéraux
Command-query separation (CQS)
Exceptions
Ne vous répétez pas (DRY – Don’t Repeat Yourself)
Programmation structurée
Qualité des commentaires – Du bon usage des commentaires
Pourquoi et quand écrire des commentaires ?
Expliquer par le code
Bons et mauvais commentaires
Qualité de la mise en forme – Codez avec style et établissez une mise en forme adéquate
Le but de la mise en forme
Mise en forme verticale
La métaphore du journal : les gros titres
Mise en forme horizontale
Objets et structures de données – Programmation orientée objet vs. Programmation procédurale
SOLID, 5 principes de base
Abstraction de données
Antisymétrie
La loi de Déméter
Transfert de données
Erreurs – Gérez-les efficacement
Utiliser les exceptions
Ecrire les déclarations try/catch avant tout
Utiliser des exceptions non-contrôlées
Fournir du contexte avec les exceptions
Définir des classes d’exceptions
Définir un flux normal
Null
Boundaries – Délimitez vos sous-systèmes en érigeant les bonnes frontières
Utiliser du code tiers
Explorer les boundaries
Apache Log4J
Boundaries propres
Tests unitaires – Testez proprement avec le Test Driven Development
Les 3 lois du TDD
Garder les tests propres
Langage de test sur un domaine spécifique
FIRST, les qualités d’un bon test : « Fast », « Independent », « Repeatable », « Self validating » et « Timely »
Classes – Ecrivez des classes propres
Organisation de classes
Petites classes
Principe de responsabilité unique
Maintenir la cohésion
Organiser le changement
Systèmes – Bâtissez un ensemble cohérent
Séparer la construction et l’utilisation
Injection de dépendances
Changement d’ordre de grandeur
Préoccupations de montage
Architecture système, Test Drive
Optimiser la prise de décision
Utiliser les standards
Langage dédié
Emergence – Pratiquez le Design Emergent
Principes du Design Emergent
Règles simples de design
DRY, ne vous répétez pas
Expressivité
Classes et méthodes minimes
Concurrence – Formez-vous au paradigme de programmation concurrente
Pourquoi la concurrence ?
Grands principes
Connaître sa bibliothèque
Modèles d’exécution
Dépendances entre méthodes synchronisées
Clean shutdown
Tester du code hiérarchisé
Smells et heuristiques – Enlevez les mauvaises odeurs
Les « code Smells », principe de « bad smell »
Refactoring
Utiliser des heuristiques