6.4. Bonnes pratiques

Nous complétons cette introduction à la programmation avec Python par quelques bonnes pratiques et recommendations permettant de simplifier le développement et la maintenance du code.

6.4.1. L’instruction pass

Le mot réservé pass est une instruction Python à part entière qui a pour effet… de n’en avoir aucun. Cette instruction ne fait rien. À quoi sert-elle donc ? Nous allons le voir en décrivant quelques situations dans lesquelles cette instruction peut se révéler utile.

Écrire la structure d’un programme

Il est généralement considéré comme une bonne pratique, lorsque l’on travaille sur un grand programme, d’en écrire la structure avant d’entrer dans les détails de la mise en œuvre.

Par exemple, si nous souhaitons écrire un programme qui demande à l’utilisateur de saisir un message pour ensuite l’encrypter selon le chiffrement de César (décalage alphabétique) en enfin le sauvegarder le résultat dans un fichier, la structure du programme pourrait ressembler à ceci.

message = get_message()
cipher = caesar(message, 5)  # décalage de 5 lettres selon l'ordre alphabétique
file_name = choose_file()
save_to_file(cipher, file_name)

Le programme est ainsi bien structuré en plusieurs fonctions et celles-ci sont déjà correctement assemblées, même si elles n’ont pas encore été définies. Commençons donc par définir choose_file(), qui va demander à l’utilisateur de saisir le nom du fichier à créer.

def choose_file():
    return input("Veuillez saisir le nom du fichier : ")

Testons maintenant notre programme pour voir si choose_file() fonctionne correctement.

...
NameError: name 'get_message' is not defined

Nous obtenons une erreur indiquant que la fonction get_message() a été appelée alors qu’elle n’est pas définie. Que faire alors ?

Il existe plusieurs possibilités :

  1. Écrire l’intégralité des fonctions avant de tester le programme. Cela n’est malheureusement pas toujours possible dans le cas de grands projets.

  2. Déclarer toutes les fonctions en leur faisant temporairement renvoyer des données incorrectes. Par exemple caesar(message, shift) pourrait juste renvoyer message, sans l’encrypter. Il ne s’agit pas d’une mauvaise solution, mais il n’est pas toujours simple de se rappeler quelles fonctions ont été correctement mises en œuvre et lesquelles ne l’ont pas encore été.

  3. Le mot réservé pass. Il permet au programme d’être syntaxiquement correct et il est facilement identifiable comme une instruction temporaire qui attend d’être remplacée. On l’accompagne généralement d’un commentaire de la forme # TODO: suivi d’un petit rappel.

Ainsi, l’ébauche du programme pourrait ressembler à ceci.

def get_message():
    return input("Veuillez saisir le message à encrypter : ")

def caesar(message, shift):
    pass  # TODO: à compléter...

def choose_file():
    return input("Veuillez saisir le nom du fichier : ")

def save_to_file(text, file_name):
    pass  # TODO: à compléter...

message = get_message()
cipher = caesar(message, 5)  # décalage de 5 lettres selon l'ordre alphabétique
file_name = choose_file()
save_to_file(cipher, file_name)

On peut à présent exécuter le programme son déclencher d’erreur.

Veuillez saisir le message à encrypter : chuuuuut
Veuillez saisir le nom du fichier : secret.txt

Remplacer de futurs blocs d’instructions

De manière générale, pass peut être employé pour prendre la place de n’importe quel bloc d’instructions en attente d’être codé, par exemple dans une structure conditionnelle ou dans une boucle.

if is_character_idle:
    pass  # TODO: déplacer le personnage
else:
    pass  # TODO: diminuer l'endurance du personnage

for input in inputs:
    pass # TODO : traiter les entrées reçues de l'utilisateur

6.4.2. The Zen of Python

The Zen of Python est un court poème écrit (en anglais) par Tim Peters, l’un des grands contributeurs du language, décrivant la philosophie de programmation de Python. On peut l’affiche dans le REPL grâce à l’instruction suivante.

import this

Ce poème compile de manière succincte bon nombre de recommendations utiles pour le développement de programmes Python. Lisez-le et laissez-vous inspirer !