J’ai récemment eu la chance de démarrer un nouveau projet sur lequel nous utilisons .NET6 et C#10. J’ai donc pu commencer à mettre en pratique quelques-unes des nouvelles possibilités qui s’offrent à nous. Dans cet article, je voulais exposer l’utilisation des global using de C# 10, qui va à mon avis grandement aider pour la lisibilité de notre code.
Répétitions de usings
Prenons en exemple des classes de tests que j’ai au niveau d’un projet de tests d’architecture, pour lequel j’ai utilisé ArchUnit (d’ailleurs nous avons fait un épisode du Bracket Show sur ce sujet). Dans toutes mes classes de tests, j’ai toujours ceci en haut du fichier:
Je pourrais me faire un template pour ce type de classe de tests, mais ceci pourrait devenir exponentiel selon les différents cas d’utilisations en dehors de uniquement cet exemple. En plus, ça n’enlève pas ces quelques lignes du haut de mon fichier.
Les global using
Voilà que les global using viennent palier à ce problème. L’idée est simple, il faut uniquement ajouter le mot global devant un using, et il deviendra importé pour toutes les classes d’un projet. Ce comportement est similaire à ce qu’on met dans le fichier _Imports.razor d’un projet fait avec Blazor. Idéalement on place ces usings à l’intérieur d’un fichier séparé, facilement identifiable, et on n’a plus à s’en soucier.
Avec ceci, nous aurons même un warning de la part de Visual Studio si on tente d’ajouter un de ces usings dans une classe, de la même manière que si on le mettait en double dans la classe.
Ne pas abuser
Malgré que très utile, à mon avis il faut faire attention de ne pas abuser. Ceci devrait être utilisé pour ce qu’on identifie comme étant commun à tout le projet. Certains imports peuvent être spécifiques à une classe, on ne devrait donc pas les voir importés globalement pour le projet.
Conclusion
Ceci est un premier article sur ce que C# 10 va nous offrir, d’autres suivront dans les prochaines semaines. Que pensez-vous de cette fonctionnalité? Est-ce qu’il y a autre chose de C# 10 que vous aimeriez voir abordé? Laissez-moi savoir dans les commentaires.
Bruno