Amélioration d'un programme
Le programme conversion.c convertit un
montant des euros en francs. Il peut être compilé à
l'aide de ce Makefile.
$ conversion 3
3.000000 E -> 19.678710
FF
La première
amélioration consiste à rajouter un message rappelant
l'usage de ce programme en cas d'erreur. Noter que le message n'est pas
affiché sur la sortie standard, mais sur la sortie erreur
standard, grâce à l'utilisation de la fonction fprintf.
On limite également à 2 le nombre de décimales
affichées pour la somme en francs, en utilisant l'expression %.2f dans le format de sortie.
$ conversion 3
3.000000 E ->
19.68 F
$ conversion
Usage: conversion somme-en-euros
La seconde
amélioration est plus importante. Elle
consiste à découper le programme en fonctions, ce qui
améliore à la fois la lisibilité (les
opérations effectuées sont nommées), la
maintenabilité (il est plus facile de savoir où les
modifications doivent être faites) et la
réutilisabilité, en évitant la duplication de code.
De plus, la valeur 6.55957 a été stockée dans une
constante, ce qui améliore la maintenabilité (un seul
endroit ou cette valeur est suceptible d'être modifie) et la
lisibilité (la constante est nommée).
Enfin l'expression atof(argv[1])
est factorisée à l'aide d'une variable locale, montant_euros. L'interêt
de cette factorisation, qui n'est pas nécessaire du point de vue
de l'efficacité, est parfois contestée car l'usage d'un
trop grand nombre de variables locales dans une fonction nuit à
sa refactorisation.
La factorisation de code est une
condition nécessaire à la lisibilité, la
maintenabilité et l'extensibilité. Attention à
l'usage du "copier/coller" !
La troisième version consiste à faire de
conversion un véritable module réutilisable. Pour cela,
le programme est découpé en 3 fichiers :
- conversion.h qui contient
les déclarations du module
- conversion.c qui contient
la définition des fonctions du module
- main.c qui contient
l'interface de la commande conversion
Le Makefile doit
également être modifié.