Lisibilité : Facilité avec laquelle un programme peut être lu et compris par un humain.
- Examiner les noms de variables et fonctions
- Vérifier l'indentation et la structure
- Analyser la clarté des commentaires
- Identifier la logique du programme
- Noter la facilité de compréhension
Les noms de variables et fonctions doivent être descriptifs.
Une indentation correcte améliore la structure visuelle du code.
Le code lisible permet de comprendre rapidement la logique.
Un code lisible utilise des noms descriptifs, une indentation correcte et des commentaires pertinents.
• Nommage : Variables et fonctions avec noms descriptifs
• Structure : Indentation cohérente et logique
• Commentaires : Expliquer les parties complexes
Efficacité : Capacité d'un algorithme à résoudre un problème avec un minimum de ressources.
Identifier la complexité algorithmique en fonction de la taille des données.
Tester différentes implémentations pour la même fonctionnalité.
Utiliser des mesures concrètes pour évaluer l'efficacité.
L'efficacité d'un algorithme dépend de sa complexité et de sa performance en pratique.
• Complexité : Analyser la complexité théorique
• Optimisation : Chercher des algorithmes plus efficaces
• Tests : Mesurer les performances avec des données réelles
Robustesse : Capacité d'un programme à gérer correctement les erreurs et les cas limites.
Rechercher les situations qui pourraient causer des erreurs.
Vérifier les types et les valeurs des paramètres.
Lever des erreurs appropriées avec des messages clairs.
Un code robuste gère les erreurs et les cas limites sans se planter.
• Validation : Vérifier les types et les valeurs
• Exceptions : Lever des erreurs appropriées
• Tests : Vérifier les cas limites
Maintenabilité : Facilité de modification, correction et évolution du code.
Chaque fonction doit avoir une responsabilité unique.
Les fonctions doivent pouvoir être réutilisées dans d'autres contextes.
Changer une fonctionnalité ne devrait pas affecter d'autres parties.
Un code maintenable est divisé en fonctions modulaires avec des responsabilités claires.
• Modularité : Diviser le code en fonctions spécialisées
• Séparation : Chaque fonction a une seule responsabilité
• Réutilisabilité : Fonctions indépendantes et réutilisables
Documentation : Ensemble des textes explicatifs dans ou à côté du code.
Chaque fonction devrait avoir une docstring décrivant son utilité.
La documentation doit inclure les paramètres, la valeur de retour, et des exemples.
La documentation doit être compréhensible et complète.
Une bonne documentation explique clairement ce que fait le code et comment l'utiliser.
• Complétude : Inclure description, paramètres, retour
• Clarté : Utiliser un langage simple et descriptif
• Exemples : Fournir des cas d'utilisation concrets
- Lisibilité : Code clair, noms descriptifs, indentation correcte
- Efficacité : Algorithmes optimaux, complexité minimale
- Robustesse : Gestion des erreurs, validation des entrées
- Maintenabilité : Modularité, réutilisabilité, documentation
- Portabilité : Compatibilité avec différents environnements
- Nommage : Variables et fonctions avec noms descriptifs
- Structure : Code bien organisé en modules/logiques
- Documentation : Docstrings pour chaque fonction
- Validation : Vérification des paramètres et gestion des erreurs
- Tests : Vérification des cas limites et erreurs possibles
- Écrire du code lisible avant d'optimiser la performance
- Valider les entrées pour garantir la robustesse
- Diviser le code en fonctions modulaires
- Documenter chaque fonction avec des exemples
- Tester les cas limites et les erreurs possibles