Factoriser le code avec les fonctions
Objectifs
Comprendre la notion de factorisation de code ;
Découvrir la notion de fonction.
Mise en situation
Dans son activité quotidienne, un développeur doit souvent réutiliser certains bouts de code car certaines parties d'algorithmes se retrouvent dans plusieurs programmes. Pour éviter de recopier systématiquement les mêmes instructions, il faut avoir recours à des fonctions. On dit qu'il factorise son code, c'est à dire qu'il supprime les duplications en les regroupant dans une structure : la fonction. Une fonction peut-être ensuite appelée à différents moments lors de l'exécution du programme, pour réaliser les mêmes opérations.
Recopie de code
Un développeur est souvent amené à réutiliser un bout de code à plusieurs endroits dans un programme ou dans différents programmes. Ces bouts de codes peuvent être des opérations de base tels que calculer le prix TTC à partir du prix HT ; ou alors des opérations plus complexes comme envoyer un mail. Par exemple, un site de e-commerce doit calculer le prix HT pour chaque produit et doit également envoyer des mails pour diverses raisons (inscription, message privé, information sur la commande, etc.).
Attention : Problème de gestion des recopies
La recopie pose deux problèmes majeurs. Le premier est que sur des projets très importants, le nombre de recopies d'un bout de code donné pourrait être très grand. En évitant cette recopie, l'espace disque occupé par le code pourrait être significativement réduit. Le second problème est la gestion des versions. En effet, si le développeur découvre que le code recopié possède un bug ou pourrait être optimisé, il va devoir modifier l'ensemble des copies. Pour faire simple, la recopie crée un problème de versionnage qui est à éviter à tout prix particulièrement sur des projets à la taille importante, car pouvant provoquer des erreurs difficiles à diagnostiquer.
Méthode : Factoriser son code grâce à des fonctions
La factorisation du code est souvent réalisée grâce à des fonctions. Une fonction contient un ensemble d'instructions ré-utilisables que le programme exécutera à chaque appel, plutôt que recopier le code. Voici en JavaScript puis en Python comment déclarer une fonction puis l'appeler.
/** JavaScript : affiche 'Hello world!' */
function helloWorld () {
console.log('Hello world!')
console.log('I am a developper.')
}
helloWorld() // On appelle la fonction une première fois
// D'autres opérations
helloWorld() // Second appel de la fonction
"""Python : affiche affiche 'Hello world!' """
def hello_world():
print("Hello world!")
print("I am a developper.")
hello_world() # On appelle la fonction une première fois
# D'autres opérations
hello_world() # Second appel de la fonction
Exemple : Chantons Sloubi
Voici un exemple trivial en JavaScript dans lequel on réutilise plusieurs fois le même bout de code. Dans le second programme, on définit préalablement une fonction et celle-ci sera appelée pour éviter de recopier le code.
/** JavaScript : chante sloubi */
console.log('Une partie de Sloubi')
for (let i = 0; i < 20; i++) {
console.log('Sloubi', i)
}
console.log('Allez une autre')
for (let i = 0; i < 20; i++) {
console.log('Sloubi', i)
}
console.log('Encore!')
for (let i = 0; i < 20; i++) {
console.log('Sloubi', i)
}
console.log('Une dernière.')
for (let i = 0; i < 20; i++) {
console.log('Sloubi', i)
}
console.log('Une pour la route')
for (let i = 0; i < 20; i++) {
console.log('Sloubi', i)
}
/** JavaScript : chante sloubi avec moins de code */
function sloubi () {
for (let i = 0; i < 20; i++) {
console.log('Sloubi', i)
}
}
console.log('Une partie de Sloubi')
sloubi()
console.log('Allez une autre')
sloubi()
console.log('Encore!')
sloubi()
console.log('Une dernière.')
sloubi()
console.log('Une pour la route')
sloubi()
À retenir
Un développeur est souvent amené à réutiliser des morceaux de code qu'il a déjà développé.
Les fonctions permettent notamment de factoriser le code et d'éviter une recopie.