Fiche de révision : Habitudes d’écriture et tests unitaires

Plan du Cours

  1. Objectifs du clean code
  2. Conventions de nommage Python
  3. Commentaires utiles et structure
  4. Décomposition en fonctions
  5. Factorisation du code
  6. Principes des jeux de tests
  7. Mise en œuvre des tests
  8. Limites et compléments des assertions

1. Objectifs du clean code

Notions clés & Définitions

  • Clean code : Vise à améliorer la qualité du code en minimisant le coût du changement et en maximisant la capacité du logiciel à répondre aux évolutions.

★ À maîtriser

  • Les principales pistes d’amélioration de l’écriture sont : le nommage, les commentaires, la décomposition en fonctions, la factorisation des fonctionnalités redondantes

Compléments

📌 La règle du boy-scout consiste à laisser le code source plus propre qu’au moment où on l’a trouvé.

Astuce mémo

Code mieux écrit → coût du changement minimisé et adaptation facilitée

2. Conventions de nommage Python

★ À maîtriser

📌 Dans l’UE Info1.Algo1, les noms sont écrits en français, sont précis et reflètent ce que représente une variable ou ce que fait une fonction.

📌 Les variables et fonctions Python suivent la convention snake_case. - PEP 8, Style Guide for Python Code

Compléments

  • Les variables et fonctions booléennes commencent par est_ ou a_, les indices sont distingués par le préfixe i_, les listes peuvent être nommées au pluriel et les variables de comptage commencent par nb_.

Astuce mémo

Le nom décrit le quoi, pas le comment

3. Commentaires utiles et structure

★ À maîtriser

📌 Un commentaire doit expliquer l’intention ou le pourquoi du code plutôt que décrire simplement comment il s’exécute.

Compléments

📌 Dans un code long, les commentaires peuvent structurer le programme avec des titres et des séparations entre les parties fonctionnelles.

Astuce mémo

Commenter le pourquoi, pas le comment

4. Décomposition en fonctions

★ À maîtriser

  • La décomposition améliore :

    • la lisibilité
    • la modularité
    • la réutilisabilité
    • la testabilité
    • la maintenance
    • le diagnostic des erreurs
    • les mises à jour
  • Pour décomposer un programme, on commence par le programme principal, puis on remonte en précisant les étapes du traitement et en créant les fonctions utilitaires nécessaires.

Compléments

  • Dans un programme de nombres supérieurs à la moyenne, les fonctions peuvent saisir une liste d’entiers, calculer la moyenne, sélectionner les valeurs supérieures ou égales à cette moyenne et les afficher.

Astuce mémo

Entrées → traitement → sorties

5. Factorisation du code

★ À maîtriser

  • Pour factoriser du code, il faut repérer des fonctions ressemblantes, mettre en commun leur code identique et transformer leurs différences en paramètres supplémentaires.

Compléments

  • Les fonctions monter, descendre et droite d’un point mobile sont factorisables parce qu’elles décomposent toutes le point en coordonnées et ne diffèrent que par le déplacement appliqué.

Astuce mémo

Code ressemblant → parties communes et paramètres

6. Principes des jeux de tests

Notions clés & Définitions

  • Jeu de test : Spécifie, pour une fonction et des paramètres donnés, la valeur de retour attendue.

★ À maîtriser

  • 🔄 La construction des tests consiste à :
    1. couvrir les cas généraux
    2. couvrir les cas particuliers
    3. couvrir les cas extrêmes
    4. tenter de mettre le code en défaut

📌 Un test en boîte noire utilise uniquement l’énoncé sans connaître le code, tandis qu’un test en boîte blanche utilise le code pour caractériser les cas d’exécution.

Compléments

  • Un jeu de tests qui couvre l’intégralité des lignes d’une fonction est dit complet.

Astuce mémo

Boîte noire : énoncé ; boîte blanche : code

7. Mise en œuvre des tests

Notions clés & Définitions

  • Assertion : Expression booléenne qui doit être évaluée à vrai ; si elle est fausse, l’exécution du programme s’arrête.

★ À maîtriser

📌 En Python, l’instruction assert s’écrit assert <expression booleenne>, "message d’erreur" et affiche le message uniquement lorsque l’expression est fausse.

Compléments

📌 Les jeux de tests d’une fonction sont regroupés dans une fonction nommée test_<nom fonction a tester>.

Astuce mémo

Jeux de tests → assertions → fonction de test

8. Limites et compléments des assertions

★ À maîtriser

📌 Les instructions assert sont réservées au débogage et sont automatiquement désactivées en mode Python optimisé avec l’option -O ou -OO.

Compléments

📌 Les expressions booléennes utilisées dans les assertions ne doivent pas avoir d’effets de bord.

📌 L’instruction assert exécutable utilisée pour vérifier le code ne doit pas être confondue avec les assertions formelles qui guident un outil de preuve d’algorithme.

Astuce mémo

Débogage : assert ; fonctionnement du programme : validation explicite

Tableaux de synthèse

Comparaison des tests en boîte noire et blanche

DimensionBoîte noireBoîte blanche
Connaissance du codeCode inconnuCode connu
Base de conceptionÉnoncéImplémentation
Moment d’écritureAvant la fonctionAprès la fonction
Critère de couvertureBesoins de l’énoncéLignes et chemins d’exécution

Teste tes connaissances

Teste tes connaissances sur Habitudes d’écriture et tests unitaires avec 11 questions à choix multiples et corrections détaillées.

1. Les principales pistes d’amélioration de l’écriture du code comprennent :

2. Concernant les conventions de nommage des variables et fonctions Python, quelles sont les réponses exactes au sujet de cette convention ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Habitudes d’écriture et tests unitaires avec 10 flashcards interactives.

Quel est l'objectif principal du Clean code ?

Améliorer la qualité du code en minimisant le coût du changement.

Quelle convention de nommage suivent variables et fonctions Python selon PEP 8?

La convention snake_case.

Que recommande la règle du boy-scout en programmation ?

Laisser le code source plus propre qu'à sa découverte.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches