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 :
Le Makefile doit également être modifié.