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.