Bonnes pratiques de programmation

publicité
Bonnes pratiques de programmation
Voici quelques conseils pratiques pour rendre vos programmes plus lisibles, à la fois pour toute personne amenée à
l’utiliser (collègue, ou dans l’immédiat, professeur), et à la fois pour vous-même : un programme clair sera plus simple
à corriger ou améliorer, et à reprendre lors du TP suivant.
En pratique, les programmes peu clairs seront pénalisés dans les devoirs, et le professeur ne passera corriger lors
des TP que les programmes un minimum expliqués.
1
Exemple
Voici un programme python. Que calcule-t-il ?
def f(a,b):
x=0
y=a
while y>=b:
x+=1
y-=a
return(x,y)
Et maintenant celui-ci :
def f(a,b):
quotient=0
reste=a
while reste >=b:
reste-=a
quotient+=1
# Tant qu’on peut retirer b dans le reste, on le fait
# Et on augmente le quotient de 1
#On sort de la boucle lorsque le reste est <b : c’est alors le bon reste
# de la division euclidienne.
return(quotient, reste)
En python, tout texte écrit après un # n’est pas lu par l’ordinateur. Il s’agit d’un "commentaire", il est destiné à
expliqué le programme aux être humains amenés à le lire.
On peut encore améliorer trois choses : le nom de la fonction elle-même, rajouter une aide, et signaler le fait que
cet algorithme ne fonctionne que si a ≥ 0 et b > 0 ! Pour ce dernier point, nous allons d’une part l’écrire dans l’aide,
et d’autre part vérifier que a ≥ 0 et b > 0, renvoyer une erreur sinon.
L’aide s’indique au début de la fonction encadrée par trois paires de guillemets. Pour la vérification, utiliser :
assert condition à vérifier , message d’erreur si la condition n’est pas vérifiée.
def divisionEuclidienne(a,b):
"""a et b sont entier positifs, b doit être non nul. Le programme renvoie le quotient et le reste
de la division euclidienne de a par b, sous la forme (quotient, reste)"""
1
assert b>0, "b n’est pas >0!"
assert a>=0, "a n’est pas >=0!"
quotient=0
reste=a
while reste >=b:
# tant qu’on peut retirer b dans le reste, on le fait
reste-=a
quotient+=1
# Et on augmente le quotient de 1
# On sort de la boucle lorsque le reste est <b : c’est alors le bon reste de la
# division euclidienne.
return(quotient, reste)
Remarque: L’aide sera affichée lorsque l’utilisateur tapera help(divisionEuclidienne).
Remarque: Ce programme est déjà inclus dans python : pour le quotient de la division euclidienne taper a//b et pour
le reste a%b. Une remarque cependant : si vous avez besoin du quotient et du reste, le programme que nous venons de
créer calcule les deux d’un coup ! Ce sera donc plus rapide que de faire le quotient, puis de recommencer les calculs
pour le reste !
2
Conseils généraux
—
—
—
—
Écrire des commentaires, à signaler par des #.
Donner des noms clairs aux variables et fonctions.
Écrire l’aide des fonctions.
Utiliser des assert si votre fonction ne marche pas pour n’importe quelle valeur d’entrée.
2
Téléchargement