But: limiter la charge cognitive, afin de pouvoir comprendre, corriger ou réutiliser plus rapidement un programme.
Méthode:
adopter un style aéré (en python on peut ajouter des lignes vides après ou avant toute instruction).
utiliser des noms d’identificateurs qui évoquent clairement leurs usages et/ou l’intention du programmeur.
formuler les conditions complexes à l’aide de variables booléennes et des opérateurs and, or et not(). Voir Combinaisons de conditions (merci George).
ne pas utiliser de variables globales, car elles sont une source intarissable d’erreurs.
adopter le canevas suivant, qui évite les interférences indésirables entre les variables des différentes parties du programme:
#-*- coding: utf-8 -*-
# directive "coding" pour la gestion des accents dans les chaînes et les commentaires
# puis les "import"
from __future__ import division # division flottante par défaut
import math
import ...
# ensuite les définitions de fonctions
def f1 ...
def f2 ...
def main():
# ici le code de la fonction "principale"
...
# et enfin l'instruction de lancement de la fonction "principale" du programme
# (aucune autre instruction à l'extérieur des définitions de fonctions,
# hormis les "import", pour éviter la création de variables globales)
main()
(AV) Pour détecter les erreurs, il est aussi possible d’ajouter des points de vérification dans le programme pour s’assurer que l’exécution se déroule comme prévue. Ceci s’effectue à l’aide de l’instruction assert dont la forme est:
assert CONDITION
Si à l’exécution de cette instruction la condition est fausse alors le programme s’arrête et affiche un message d’erreur indiquant la condition elle-même ainsi que le numéro de la ligne où se trouve cet assert.
Une forme plus complète est:
assert CONDITION, 'MESSAGE'
Son fonctionnement est identique, avec en plus, si la condition est fausse, l’affichage de la chaîne de caractère 'MESSAGE'. On l’utilise par exemple pour indiquer des valeurs de variables liées au problème détecté:
assert x>0, "x n'est pas strictement positif, et vaut " + str(x)