Jim Wooley sur C# passé, présent et au-delà — Visual Studio Magazine

Questions et réponses

Questions-réponses avec Jim Wooley : C# passé, présent et au-delà

L’expert Microsoft MVP et LINQ discute des meilleures fonctionnalités C # actuelles, de la manière dont les développeurs peuvent rester au fait des changements et de ce qu’ils se trompent souvent sur le langage de codage phare de Microsoft.

Novembre s’annonce comme un mois chargé pour les développeurs. Avec Visual Studio 2022 et .NET 6, une autre version historique d’un produit majeur de Microsoft devrait faire ses débuts le mois prochain : la version 10 de C#.

En ce qui concerne ce qui est inclus dans la nouvelle version de C# et comment nous en sommes arrivés là, Microsoft MVP et expert LINQ Jim Woolley a les réponses. Au prochain Live! Conférence 360 ​​qui aura lieu le 11 novembre. Du 15 au 19 à Orlando, en Floride, Wooley animera une session intitulée “C# Past, Present, and Beyond” qui couvrira un grand nombre des fonctionnalités C# les plus importantes, en particulier celles des versions plus récentes (pensez à C# 6 et versions ultérieures), comment vous pouvez commencer à les utiliser aujourd’hui et à quoi vous attendre lorsque C # 10 arrivera.

Avant sa session du mois prochain, Wooley a répondu à quelques questions sur les meilleures fonctionnalités C # actuelles, sur la manière dont les développeurs peuvent rester au fait des changements et sur ce qu’ils se trompent souvent sur le langage de codage phare de Microsoft.

Magazine VisualStudio : Il y a eu beaucoup de changements dans C# ces dernières années. Quel a été le nouveau développement/changement/fonctionnalité le plus excitant ?
Laine : Au cours de sa première décennie, nous avons vu plusieurs améliorations du langage dans des domaines tels que LINQ, Lambdas, Generics et Async qui ont fondamentalement changé la façon dont nous écrivons C#. Au cours de la décennie suivante, depuis que le compilateur a été réécrit via Roslyn, nous avons vu un gonflement des fonctionnalités du langage, y compris celles que nous utilisons tous les jours comme la concaténation de chaînes, les opérateurs de terminaison nuls, les paramètres locaux et les retours de référence et la correspondance de modèles. Certaines fonctionnalités améliorent les performances des API du framework, comme Span, les opérateurs de plage et les entiers natifs. Et puis il y a des fonctionnalités pour faciliter le démarrage avec des projets simples, y compris les instructions de niveau supérieur, les utilisations statiques et globales et les déclarations d’espace de noms à portée de fichier. Il existe même certaines fonctionnalités que certains pourraient considérer comme controversées, notamment les tuples, les types de référence nullables et les implémentations d’interface par défaut.

Bien que la plupart de ces changements ne changent pas fondamentalement notre façon d’aborder le code comme les changements fonctionnels de LINQ et Lambdas, beaucoup peuvent réduire et simplifier le code que vous devez écrire en tant que développeur C#.

Les gens pensent [C# is] juste une syntaxe différente de JavaScript, Java, C, etc. et ne prenez pas le temps de comprendre les différences dans les modèles de mémoire, les pointeurs d’objet. Souvent, ils produisent des systèmes qui ont des problèmes de performances, ou qui ne fonctionnent pas correctement parce qu’ils ne comprennent pas ce que fait leur code.”

Jim Wooley, architecte de solutions, Slalom Consulting

La fonctionnalité la plus intéressante n’est peut-être pas spécifiquement une fonctionnalité de langage, mais est liée aux modifications activées avec le compilateur Roslyn, à savoir les générateurs de syntaxe fournis avec C# 9. Ces générateurs permettent des capacités de métaprogrammation améliorées pour automatiser les opérations de codage répétitives qui nécessitaient généralement une réécriture IL. , stratégies orientées aspect, réflexion, etc. Avec les générateurs, vous pouvez créer du code qui écrit du code une seule fois et réduire considérablement la quantité de code de plomberie que vous devez taper manuellement encore et encore, tout en conservant les avantages de performances de ne pas avoir à utiliser des choses comme la réflexion d’exécution, par exemple.

Existe-t-il une fonctionnalité C# sous-estimée et souvent négligée que vous souhaiteriez que davantage de personnes connaissent ?
Au fur et à mesure que de nouvelles versions de C # sont sorties, les modèles que nous utilisons pour coder ont subtilement changé. Pour faciliter la découverte de ces nouveaux modèles, l’équipe du compilateur a également créé un certain nombre d’analyseurs basés sur Roslyn et de correctifs de code pour fournir des recommandations sur la façon de découvrir les nouvelles fonctionnalités. En prêtant attention aux gribouillis et aux suggestions (points de suspension) sous les anciens modèles de code, les développeurs peuvent en apprendre davantage sur certaines de ces fonctionnalités de langage plus récentes telles que l’interpolation de chaînes, la correspondance de modèles et les variables de sortie, pour n’en nommer que quelques-unes.

De nombreux développeurs ignorent ces suggestions, mais ils peuvent souvent non seulement réduire le code que les développeurs doivent écrire, mais dans certains cas même mettre en évidence des bogues potentiels dans la base de code que le compilateur pourrait autrement ignorer. Dans de nombreux cas, le simple fait d’apprendre un simple raccourci clavier dans Visual Studio (Ctrl-.) lorsque le focus est placé sur une ligne qui peut être optimisée peut commencer à enseigner aux développeurs comment améliorer leur code.

Face aux mises à jour constantes, quelle est la meilleure façon de maintenir vos compétences en C# et de rester au fait des changements ?
Fini le temps où nous allions simplement dans une librairie pour prendre un livre nous enseignant les dernières fonctionnalités. La technologie change trop fréquemment et au moment où un nouveau livre est produit, une nouvelle version de la technologie a souvent déjà été expédiée et a rendu des parties de ce livre obsolètes. Par exemple, avec C# au cours des cinq dernières années, nous avons vu C# 7.0, 7.1, 7.2, 7.3, 8.0, 9.0 et — cet automne — 10.0. Si vous souhaitez rester à jour sur l’état des différentes fonctionnalités linguistiques, le mieux est de surveiller le référentiel GitHub pour les fonctionnalités linguistiques ainsi que les pages de fonctionnalités linguistiques du site Microsoft docs.

Bien sûr, la meilleure façon d’en savoir plus sur les nouvelles fonctionnalités est d’assister à des conférences comme Live ! 360 et d’autres événements communautaires qui discutent de choses que vous ne connaissez pas pour avoir un aperçu de ce qui est disponible et pourquoi vous devriez envisager de l’utiliser. Ne vous attendez pas à apprendre tout ce qu’il y a à savoir sur le sujet en une heure, mais le simple fait de savoir qu’il existe vous aidera le moment venu où vous devrez utiliser une nouvelle technologie. Ensuite, vous pouvez apprendre de la meilleure façon que je connaisse – en essayant d’utiliser la technologie et en relevant les défis que vous rencontrez.

De plus, si vous utilisez un IDE moderne, faites attention aux recommandations qu’il vous donne sur les moyens d’améliorer votre code. Vous pouvez souvent apprendre beaucoup de nouvelles façons de faire les choses simplement en essayant certaines des suggestions qu’il donne.

Comment la communauté C# a-t-elle évolué, notamment par rapport aux autres langages de programmation ? Où la voyez-vous progresser ?
Lorsque C # et .NET étaient open source, les développeurs C # n’avaient plus besoin de s’appuyer sur des outils de réflexion et de décompilation pour comprendre comment les choses fonctionnent et nous pouvons voir l’implémentation et les détails par nous-mêmes. Cela signifie que nous n’avons plus besoin de nous fier aux appels du service d’assistance ou aux forums Microsoft pour comprendre comment utiliser les éléments du framework. Nous pouvons maintenant examiner la source réelle non seulement des bibliothèques que nous utilisons, mais également du compilateur lui-même.

En conséquence, les développeurs de langage ne travaillent plus dans le vide, mais surveillent et discutent activement de nouvelles fonctionnalités de langage potentielles directement avec vous, le client sur GitHub, pour tous ceux qui souhaitent participer (et potentiellement contribuer au code). Les documents pour .NET et C# sont également open source, donc si vous trouvez une lacune ou un bogue, vous pouvez créer un problème et éventuellement contribuer votre propre pull request pour aider les autres.

En plus des canaux officiels de l’équipe C#, il existe également d’autres ressources en ligne comme les blogs, Twitter et Stack Overflow. Bien que cela permette à la communauté d’avoir un meilleur accès aux informations, cela pose également un défi de mise à jour ou de qualification de la version de C#/.NET à laquelle l’élément s’applique. Parfois, trouver les réponses à vos problèmes est plus difficile car la pile technologique sous-jacente peut avoir changé (.NET Framework vers .NET Core vers .NET 5/6, par exemple). Naturellement, ce défi n’est pas isolé pour C #, mais peut être vu dans de nombreux autres langages et plates-formes. Considérez, par exemple, les défis d’essayer de trouver des ressources spécifiques à Angular lorsque ce cadre a complètement changé entre les versions 1. x et 2+.

Au fil du temps, ne vous attendez pas à ce que le nombre et la qualité des ressources en ligne diminuent, mais veillez à vérifier la date de la publication d’origine et à en tenir compte dans votre décision quant à savoir si cela résout votre problème ou non.

Quelle est la plus grande erreur ou idée fausse que les développeurs ont à propos de C# ?
Les gens pensent que c’est juste une syntaxe différente de JavaScript, Java, C, etc. et ne prenez pas le temps de comprendre les différences dans les modèles de mémoire, les pointeurs d’objet. Souvent, ils produisent des systèmes qui ont des problèmes de performances ou qui ne fonctionnent pas correctement parce qu’ils ne comprennent pas ce que fait leur code. Bien que vous n’ayez pas à connaître les composants internes de tout ce que vous utilisez, vous ne devriez pas simplement trouver une réponse Stack Overflow à votre question et choisir la première réponse en supposant qu’elle résoudra vos problèmes sans comprendre la solution et pourquoi elle est meilleure que les autres. .

A propos de l’auteur

Gladys Rama (@GladysRama3) est l’éditeur de Redmondmag.com, RCPmag.com et AWSInsider.net, et le directeur éditorial de Converge360.

.

Leave a Comment

Your email address will not be published. Required fields are marked *