Lors de la Google I/O 2023, Dart le langage de Flutter a été annoncé en version stable : une version qui va changer la façon d'écrire du code Flutter.
Lors de la Google I/O 2023, Dart le langage de Flutter a été annoncé en version stable : une version qui va changer la façon d'écrire du code Flutter. Cette version majeure du langage et son lot de nouveautés ont apporté de la facilité de développement, de la stabilité dans le code et permet de décupler la productivité des développeurs.
À l’occasion d’un meetup Tech Talks, co-organisé avec DigitRE, nous avons eu le plaisir de parler de Dart 3, avec Eric Taix, Senior Full Stack Developer.
Dart 3 apporte une nouvelle catégorie syntaxique majeure. Cette nouvelle façon d'écrire du code Dart s'accompagne de plusieurs nouveautés, dont les Records, qui permettent de regrouper des données de différents types, des Pattern Matching pour vérifier la conformité d’une instance à une structure définie, ainsi que les switch expressions et les sealed class.
Lors de ce live coding, Eric nous partage quelques enseignements sur ces 4 nouveaux éléments.
Auparavant, une fonction Dart ne pouvait renvoyer qu'une seule valeur. Ainsi, pour les fonctions qui devaient renvoyer plusieurs valeurs, les utilisateurs devaient soit les regrouper dans d'autres types de données (tels que des maps ou des listes), soit définir de nouvelles classes pouvant contenir les valeurs (des data classes).
Les Records simplifient la création de données structurées, avec une syntaxe agréable et simplifiée sans avoir à créer une nouvelle classe.
“C’est sympa : 3 /5
Record est à utiliser avec des propriétés nommées et principalement pour des fonctions internes.
Attention, n’utilisez surtout pas Record pour retourner soit une valeur, soit une erreur : cela poserait un problème sémantique !
Un pattern Matching est une fonctionnalité qui vérifie si une variable ou un objet donné correspond à un modèle ou à une structure spécifique.
Il permet de vérifier si une valeur donnée :
Cette fonctionnalité est très répandue dans des langages de programmation fonctionnelle comme Haskell ou Scala.
“C’est génial. 5/5
Avec Pattern Maching, le code est beaucoup plus lisible.
Un dernier argument non négligeable est la visibilité accrue des bugs permettant une résolution plus rapide.”
Le Switch traditionnel était impératif et procédural, n’ayant pas la capacité de renvoyer une valeur directement. Aujourd’hui, la nouvelle expression Switch est de nature fonctionnelle. Il s'agit d'une expression plutôt que d'une instruction, ce qui signifie qu'elle est évaluée à une valeur.
L’expression Switch dans Dart 3 utilise une syntaxe similaire aux fonctions fléchées pour mapper les clauses directement aux valeurs. Cela rend le code plus concis, lisible et moins sujet aux erreurs.
“Je mets une note de 4 sur 5.
Cette transformation est un changement important dans Dart car elle introduit un nouvel aspect de programmation fonctionnelle, une fonctionnalité qui modernise le langage et offre aux développeurs plus de flexibilité et de puissance.”
Les sealed class sont des classes abstraites, qui permettent d’indiquer au compilateur qu’il a tous les éléments en sa possession et que personne ne pourra rajouter une classe dans la hiérarchie et dont il n’aurait pas connaissance.
Associé au pattern matching cela permet au compilateur de vérifier que rien n’a été oublié dans les cas possibles qui sont traités. Imaginez vous en train de rajouter une instance dans votre hiérarchie dans 6 mois, et instantanément le compilateur vous indiquera tous les endroits de votre code qui ne prennent pas en compte ce nouveau cas !
Le combo est génial ! Je note 5/5
Le code est fiable, la vérification se fait à la compilation : Vous ne devriez plus avoir d’erreur !
Merci encore à Eric Taix, flinter spécialiste d’architectures logicielles et de développement mobile de partager sa passion avec la communauté.
Le partage de connaissance fait partie des valeurs clés de Flint. Nous continuerons de le faire lors des prochains Meetup Tech Talks.