10 Juillet 2025 - Structs avancées et contrôle d’accès en Swift
Salut ! Nous voici au jour 34 de formation, soit le 11ème jour des 100 Days of SwiftUI. Aujourd’hui, j’ai finalisé les structs avec des concepts plus avancés qui complètent ce que j’avais vu hier. Une journée riche en apprentissages qui m’a permis de comprendre comment Swift protège et organise le code !
J’ai essayé une nouvelle approche pour la partie pratique : j’ai alterné entre des exercices flash de 1-2 minutes maximum pour bien ancrer les concepts de base, puis des exercices plus complexes pour tester ma compréhension globale.
Cet après-midi, par contre, j’ai eu un coup de mou et je n’ai pas avancé sur mes projets de portfolio, j’ai même passé ma séance de sport… flemme…
#
Apprentissages du jour
##
Le contrôle d’accès : protéger ses données
Le contrôle d’accès en Swift, c’est comme avoir différents niveaux de sécurité dans un bâtiment. Chaque information peut avoir son propre niveau d’accessibilité.
###
Les niveaux de protection
- private : accessible uniquement à l’intérieur de la struct
- fileprivate : accessible dans tout le fichier
- public : accessible partout
- private(set) : lisible par tous, mais modifiable uniquement par les méthodes internes
Ce dernier cas est particulièrement utile ! Imagine un compte bancaire : tout le monde peut consulter le solde, mais seules les méthodes de dépôt et retrait peuvent le modifier.
###
L’exemple qui m’a fait comprendre
Paul Hudson utilise l’exemple d’un compte bancaire pour expliquer private(set)
. En pratiquant avec cet exemple, j’ai vraiment saisi le concept : impossible de faire account.funds = 1000000
depuis l’extérieur, mais les fonctions deposit()
et withdraw()
peuvent toujours modifier la valeur.
##
Les propriétés et méthodes statiques
Les éléments statiques appartiennent au type lui-même, pas à une instance particulière. C’est comme avoir des informations partagées par toute une classe d’école.
###
Différence cruciale : self vs Self
- self (minuscule) : l’instance actuelle (55, “Hello”, true)
- Self (majuscule) : le type actuel (Int, String, Bool)
Les propriétés statiques sont parfaites pour :
- Compter le nombre total d’objets créés
- Stocker des informations partagées
- Créer des méthodes utilitaires
##
Points techniques importants
###
Gestion des initialiseurs personnalisés
Quand on crée un initialiseur personnalisé, Swift ne génère plus automatiquement l’initialiseur par défaut. Il faut donc être stratégique dans ses choix.
###
Les propriétés calculées
Elles permettent de créer des informations dérivées en temps réel. Dans mon exercice, isLowStock
calculait automatiquement si le stock était critique.
###
Les valeurs par défaut intelligentes
Plutôt que de forcer l’utilisateur à spécifier chaque paramètre, on peut définir des valeurs sensées par défaut.
#
Réflexions sur cette approche
Cette méthode d’alternance entre exercices rapides et défis complexes s’est révélé assez efficace. Les exercices flash m’ont permis d’ancrer les syntaxes de base, tandis que l’exercice complexe m’a forcé à réfléchir à prendre un peu d’hauteur et de réflechir à comment bien implémenter une struct.
Je sens que mon cerveau commence vraiment à s’habituer à la logique Swift, surtout avec ces concepts de protection des données qui n’existaient pas dans mes expériences JavaScript précédentes.
À demain pour la suite de cette aventure !