Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

C# 6.0 – les “Expression-bodied function members”

[new:30/04/2015]Encore une nouveauté qui va faciliter l’écriture du code… Sous ce nom un peu complexe d’Expression-bodied function members se cache quelque chose d’assez simple mais de très puissant…

Expression-bodied function members

Un nom à rallonge qu’on pourrait traduire par “membres de fonction dont le corps est transformé en expression”…

Qu’est-ce à dire ?

Tout simplement que le corps de certaines constructions du langage C# peut désormais être directement remplacé par une expression (type expression Lambda). A noter que  pour tester cette syntaxe il vous faudra un VS 2015 et un framework .NET 4.6 (au minimum, mais lorsque j’écris ces lignes c’est le maximum !).

Code plus court (beaucoup plus court), donc plus lisible, plus maintenable, etc, vous connaissez la chanson Sourire

Regardons un premier exemple :

1[2]

La déclaration de la propriété OldName montre l’ancienne façon de procéder. Beaucoup de code pour retourner une constante (le nom du bloggeur a qui j’ai emprunté cette capture écran, rendons à césar…) . Mais cette constante nous la voulons sous la forme d’une propriété pour des tas de raisons (peu importe lesquelles ici). Nous sommes donc obligés de suivre cette syntaxe.

La première ligne montre la nouvelle façon de faire. C’est bien une propriété qui est encore déclarée et non une constante mais le corps est remplacé par une fonction (suivant “=>”). Une petite ligne pour dire la même chose.

Là où cela devient encore plus intéressant c’est qu’il est possible de faire la même chose pour les méthodes…

2[2]

OldSum() déclare une méthode qui prend deux paramètres entiers et qui effectue un traitement simple, ici une addition.

NewSum() déclare exactement la même chose en une seule ligne en remplaçant le corps de la méthode par une fonction Lambda. Le gain de lisibilité et de productivité est évident.

Mais ce n’est pas tout ! On peut aussi utiliser l’astuce syntaxique pour des méthodes qui retournent Void ou des Tasks. Dans ce cas l’expression doit être une instruction simple qui généralement ne retourne rien non plus :

4[2]

OldLog() permet d’écrire une chaîne passée en argument sur la console (ou un système de log quelconque).

NewLog() fait de même mais en une seule ligne bien plus claire et débarrassée des “{ }” directement accessibles sur une clavier américain mais un peu enquiquinants à obtenir sur un clavier Azerty. Pour les français le gain est donc encore plus grand !

Conclusion

Ces nouvelles constructions de C# 6.0 apportent un vrai bénéfice en termes de lisibilité du code avec tout ce que cela implique de productivité, maintenabilité et le reste.

Un langage toujours moderne même dix ans après.

Stay Tuned !

blog comments powered by Disqus