Clean code - FioDams/FioDams GitHub Wiki

Le "Clean Code" (Code Propre en français) est un concept popularisé par Robert C. Martin dans son livre "Clean Code: A Handbook of Agile Software Craftsmanship". Il s'agit d'un ensemble de principes et de pratiques visant à produire un code source lisible, maintenable et efficace. Voici quelques points clés du Clean Code :

  1. Nommage clair et significatif :

    • Utilisez des noms descriptifs pour les variables, fonctions et classes.
    • Évitez les abréviations ambiguës.
  2. Fonctions courtes et à responsabilité unique :

    • Chaque fonction devrait faire une seule chose et la faire bien.
    • Limitez la taille des fonctions (idéalement moins de 20 lignes).
  3. Commentaires judicieux :

    • Le code devrait être auto-explicatif.
    • Utilisez des commentaires pour expliquer le "pourquoi" plutôt que le "comment".
  4. Formatage cohérent :

    • Suivez un style de formatage cohérent dans tout le projet.
    • Utilisez des outils de formatage automatique si possible.
  5. Gestion des erreurs appropriée :

    • Traitez les exceptions de manière appropriée.
    • Évitez de retourner des codes d'erreur numériques.
  6. Ne répétez pas (DRY - Don't Repeat Yourself) :

    • Évitez la duplication de code.
    • Factorisez le code commun dans des fonctions ou des classes réutilisables.
  7. Principes SOLID :

    • Single Responsibility Principle (SRP)
    • Open/Closed Principle (OCP)
    • Liskov Substitution Principle (LSP)
    • Interface Segregation Principle (ISP)
    • Dependency Inversion Principle (DIP)
  8. Tests unitaires :

    • Écrivez des tests unitaires pour chaque fonction.
    • Assurez-vous que les tests sont propres et maintenables.
  9. Refactoring régulier :

    • Améliorez continuellement la structure du code sans en changer le comportement.
  10. Simplicité :

    • Préférez des solutions simples et directes.
    • Évitez la sur-ingénierie.

Voici un exemple simple pour illustrer certains de ces principes :

File: /src/user_management.py

# Mauvais exemple
def process(d):
    for i in d:
        if i['a'] > 10:
            print(f"High value: {i['a']}")

# Bon exemple
def print_high_values(data):
    THRESHOLD = 10
    for item in data:
        if item['value'] > THRESHOLD:
            print(f"High value: {item['value']}")

# Utilisation
user_data = [{'value': 5}, {'value': 15}, {'value': 8}]
print_high_values(user_data)

Dans cet exemple, la version "propre" du code :

  • Utilise des noms descriptifs (print_high_values, data, item, THRESHOLD).
  • A une responsabilité unique (imprimer les valeurs élevées).
  • Est plus lisible et auto-explicative.
  • Utilise une constante pour le seuil, facilitant les modifications futures.

En appliquant ces principes, vous pouvez créer un code plus facile à comprendre, à maintenir et à faire évoluer, ce qui est essentiel pour des projets à long terme et le travail en équipe.