Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Python
  3. Pour aller plus loin
Extrait - Python Libérez le potentiel de votre Raspberry Pi
Extraits du livre
Python Libérez le potentiel de votre Raspberry Pi
2 avis
Revenir à la page d'achat du livre

Pour aller plus loin

Documenter le code

Il existe un ensemble de recommandations pour Python qui sont formulées dans les documents PEP. La recommandation PEP 257 donne un ensemble de conseils pour documenter et commenter le code.

D’une manière générale, le code doit être commenté pour chaque fonction. PEP recommande également de ne pas commenter de façon excessive. En effet, les commentaires du type :


# ceci est un commentaire
 

ne doivent être utilisés que pour signaler à un relecteur du code ou rappeler à son créateur une particularité qui ne serait pas explicite à la lecture du code en question (le commentaire est à placer, à proximité du passage commenté).

Le code doit comporter en particulier des lignes de documentation pour toutes les fonctions. Ces blocs de documentation sont délimités à l’aide de guillemets :


        """Ceci est un bloc de commentaire"""
 

Il est possible d’insérer des commentaires sur une ou plusieurs lignes.

D’une manière générale, un commentaire comporte toujours en première ligne la description du rôle de la fonction. Le PEP 257 précise explicitement que cette ligne ne doit pas être un copier-coller du prototype de la fonction. Les lignes ci-après illustrent la documentation d’une...

Tester le code

Le test de scripts est très utilisé dans les grands projets informatiques. La réalisation de tests automatiques permet de garantir une qualité de produit. Cette pratique fait partie de la liste des points cruciaux du test de Joël (https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/). Ce test évalue la capacité d’une équipe de développement à produire des applications de qualité.

Les tests sont cruciaux en développement informatique. C’est d’ailleurs l’un des postes de dépenses les plus importants pour Apple.

Il existe plusieurs types de tests :

  • tests unitaires

  • tests d’intégration

Les tests d’intégration sont réalisés lors de la phase d’assemblage des différentes parties de code du programme final. Ils sont généralement précédés par les tests unitaires qui sont l’objet de cette section.

Les tests unitaires permettent de tester des portions particulières du code afin de vérifier si les spécifications sont suivies. Les tests sont importants même pour le développeur qui travaille seul et dont le travail ne sera pas directement utilisé par un tiers.

En effet, les tests permettent d’éviter la « régression » d’un code ou d’un projet. Imaginons que vous développez une librairie de fonctions et que chaque fonction est couverte par des tests. Quelques mois après la finalisation du développement de cette librairie, un événement vous amène à changer les spécifications de votre librairie et donc à modifier votre code. Les tests vous permettront en partie d’assurer la compatibilité entre les anciennes utilisations de votre librairie et les utilisations postérieures à vos modifications.

Il existe différentes stratégies pour créer les tests unitaires. Certaines pratiques encouragent à créer les tests lors de la conception du projet ou de l’objet à développer, c’est-à-dire avant d’écrire le code. Ceci peut paraître étrange, mais présente de nombreux avantages, principalement l’absence de biais dans la conception des tests....

Profiler le code

Profiler le code consiste à mesurer les ressources nécessaires pour l’exécuter, tant les ressources mémoire que les ressources de calcul.

La stratégie consiste généralement, lors d’une phase d’optimisation, à mesurer le temps d’exécution des éléments constituant le programme et à chercher à réduire le temps d’exécution des éléments les plus chronophages. Il est alors possible de comparer différentes versions d’une fonctionnalité.

Python propose un module nommé cProfil qui réalise ces mesures.

Pour l’utiliser, on crée généralement la structure suivante :


    pr = cProfile.Profile() 
    pr.enable() 
    # Placer ici des éléments à tester  
    pr.disable() 
    s = io.StringIO() 
    sortby = 'cumulative' 
    ps = pstats.Stats(pr, stream=s).sort_stats(sortby) 
    ps.print_stats() 
    print(s.getvalue())
 

Les éléments à tester sont placés entre l’appel de la méthode enable() et l’appel de la méthode disable().

Reprenons la classe Voiture :


class Voiture(object): 
 
    def __init__(self, modele, marque, annee): 
        """constructeur de la classe voiture 
 
        paramètres...

Conclusion

Ce chapitre nous a fourni des pistes pour réaliser des développements en Python de meilleure qualité. La documentation et les tests garantissent de posséder un code pouvant être capitalisé pour des développements futurs ou des projets de conception collaboratifs.

Enfin, la dernière section a montré tout l’intérêt de profiler le code en vue de son optimisation.