• Mar 9, 2025

[9/16] Scope et modularité en Swift

Introduction

Lorsque vous commencez à structurer votre code, il devient essentiel de comprendre où vos variables existent et peuvent être utilisées. C’est ce que l’on appelle le scope (ou portée en français).

De plus, un bon code ne doit pas être un long bloc difficile à lire : il doit être modulaire, c’est-à-dire divisé en petites parties indépendantes et réutilisables.

Dans ce chapitre, nous allons explorer deux notions essentielles pour tout développeur Swift débutant :

  • le scope : jusqu’où une variable est visible dans votre programme,

  • la modularité : comment organiser votre code de manière claire et efficace grâce aux fonctions.


Le scope (la portée d’une variable)

En Swift, une variable n’existe que dans une certaine zone du code : c’est son scope. On peut voir cela comme une lampe de poche : vous éclairez une zone précise, mais tout ce qui est en dehors de cette zone n’est pas accessible.

1️⃣ Scope global

Une variable est dite globale si elle est déclarée en dehors de toute fonction ou boucle. Elle est alors accessible partout dans le fichier.

var nom = "Claire" // Variable globale

func direBonjour() {
    print("Bonjour, \(nom) !") // Utilisation de la variable globale
}

direBonjour()

🟢 Avantage : accessible partout dans le code.

🔴 Inconvénient : peut créer des conflits si plusieurs parties du code modifient la même variable.

2️⃣ Scope local

Une variable est dite locale lorsqu’elle est définie dans une fonction, une boucle ou un bloc if. Elle n’est accessible que dans ce bloc.

func afficherAge() {
    let age = 25
    print("Âge : \(age)")
}

// print(age) ❌ Erreur : 'age' n’existe pas ici

📌 Une variable locale disparaît dès que le bloc de code dans lequel elle a été déclarée se termine.

3️⃣ Scope dans les boucles

Chaque boucle peut aussi contenir des variables propres à elle-même.

for i in 1...3 {
    let message = "Tour numéro \(i)"
    print(message)
}

// print(message) ❌ Erreur : 'message' est inaccessible ici

Ici, la variable message n’est disponible que pendant chaque tour de boucle.

4️⃣ Scope imbriqué

Il est possible d’avoir plusieurs scopes imbriqués les uns dans les autres. Une variable locale peut coexister avec une variable du même nom dans un scope plus large, mais elle la masque temporairement.

let valeur = 10

func test() {
    let valeur = 5 // Masque la variable globale
    print(valeur) // Affiche : 5
}

test()
print(valeur) // Affiche : 10

Modularité : organiser son code avec des fonctions

Un code modulaire est un code découpé en petits blocs faciles à lire, comprendre, tester et réutiliser. Ces blocs, ce sont généralement des fonctions.

Pourquoi utiliser des fonctions ?

  1. Réduire la répétition : une fonction peut être appelée plusieurs fois sans réécrire le code.

  2. Clarifier le rôle de chaque partie du code.

  3. Faciliter le débogage et la maintenance.

Exemple sans fonction :

let prix = 100.0
let remise = prix * 0.2
let prixFinal = prix - remise
print("Prix final : \(prixFinal) €")

Exemple avec fonction :

func calculerPrixFinal(prix: Double, remisePourcent: Double) -> Double {
    let remise = prix * (remisePourcent / 100)
    return prix - remise
}

let total = calculerPrixFinal(prix: 100.0, remisePourcent: 20.0)
print("Prix final : \(total) €")

📌 Ce code est plus lisible, plus clair et peut être réutilisé dans d’autres parties de l’application.

Combiner scope et modularité

Les fonctions permettent d’isoler des scopes : chaque fonction a son propre environnement. Cela évite les conflits de noms et limite les erreurs.

func afficherMessage() {
    let message = "Bienvenue !"
    print(message)
}

// print(message) ❌ Erreur : 'message' est inaccessible ici

Conclusion

Comprendre le scope vous aide à savoir où vos variables existent et peuvent être utilisées, ce qui est crucial pour éviter les erreurs et garder un code propre.

Utiliser la modularité avec des fonctions permet de découper votre logique en blocs clairs, faciles à maintenir et à faire évoluer.

✅ Un bon développeur Swift sait organiser son code intelligemment : avec des variables bien placées, et des fonctions bien conçues.

0 comments

Sign upor login to leave a comment