C# : un langage d'avenir pour les développeurs ? - Par Kevin Griffin - Bitpipe
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
C# : un langage d’avenir pour les développeurs ? Par Kevin Griffin
Contents Un peu d’histoire 3 Perspectives de carrière pour un développeur C# 4 Une panoplie complète 5 Un éventail de plateformes illimité 7 15 ans d’innovation et de fonctionnalités 10 Nouveautés de C# 12 A fondation stable, carrière stable 18 Telerik® DevCraft™ by Progress Intégré à la suite Telerik® DevCraft™ by Progress, l’outil Telerik UI for ASP. NET MVC comprend plus de 70 composants d’interface utilisateur (UI) et des milliers de fonctionnalités que nous avons développées au fil des ans pour vous éviter de créer une interface utilisateur de A à Z. Vous disposez ainsi d’une vaste panoplie de contrôles, des incontournables outils d’aide HTML pour chaque appli (grilles, listes déroulantes et menus) aux interfaces utilisateur avancées adaptées à vos différents métiers : graphiques, diagrammes de Gantt, ordonnanceur (Scheduler), Pivot, Grilles PivotGrid et cartes (Maps). Evaluer Telerik DevCraft
Un peu d’histoire Mettez-vous dans la peau d’un développeur de logiciels à la fin des années 90. Vous disposez d’un large éventail d’outils de programmation : C++, Java, Delphi, Visual Basic, FoxPro… la liste est longue. Chacun de ces langages présente de nombreux avantages, mais également certains défauts spécifiques. Au début des années 2000, Microsoft annonce officiellement son intention de lancer sous l’appellation .NET Framework un ensemble de bibliothèques administrées. Or, ce nouveau cadre nécessite un nouveau langage. Initialement lancé sous le nom de code « Cool », le langage C#. C Sharp pour les intimes, était né. À l’origine, C# est conçu comme un langage basé sur des standards ouverts. Chacune de ses moutures est approuvée non seulement par Microsoft, mais également par l’ECMA International et l’Organisation internationale de normalisation (ISO). Quelles conséquences pour les développeurs ? Tout le monde peut créer un compilateur C# pour son système d’exploitation. Le projet Mono, implémentation open source du compilateur C# et du cadre .NET Framework, est un parfait exemple d’application de ce langage normalisé. Le langage C# a connu cinq révisions majeures depuis sa version 1.0 lancée en 2002, enregistrant au cours de cette période de multiples ajouts significatifs : génériques, méthodes et types anonymes, propriétés automatiques, arbres d’expression, dynamiques, méthodes asynchrones et compilateur en tant que service. Cette liste non exhaustive montre à quel point le langage C# s’est enrichi au fil des ans. Que vous soyez un professionnel accompli ou un simple débutant qui cherche sa voie dans le monde du codage, vous devez vous poser la question suivante : « Est-il intéressant d’intégrer le langage C# dans mon arsenal ? » Progress.com 3
Perspectives de carrière pour un développeur C# Dans son enquête annuelle consacrée à la communauté des techniciens informatiques, Stack Overflow classe le langage C# au 5e rang des technologies qu’il convient de maîtriser en 2016. Par ailleurs, les développeurs ont été invités à évaluer les langages qu’ils apprécient, redoutent et souhaitent utiliser davantage. Si l’on compare les technologies les plus performantes et les technologies les plus appréciées, il apparaît que le langage C# compte à la fois parmi les plus appréciés des développeurs et parmi les plus performants. Qu’en est-il des autres langages qui figurent également parmi les meilleures technologies ? En dépit des nombreux développements dont ils bénéficient, aucun développeur n’admettra qu’il souhaite travailler avec JavaScript, Java ou Android ! Le langage C# entre dans les deux catégories. Quel est le salaire moyen d’un développeur C# ? Un développeur capable de créer une pile complète (full stack developer) avec C# peut gagner en moyenne 95 000 dollars par an — un revenu souvent complété par d’autres compétences comme JavaScript. La seule manière d’atteindre un salaire supérieur, par exemple 105 000 dollars, est d’utiliser des technologies basées sur le cloud comme React ou Redis. Pour un développeur « front-end », l’échelle des salaires tombe à 75 000 dollars en moyenne par année. L’étude n’indique pas si le terme « front- end » désigne spécifiquement les développeurs « Web » ou s’il inclut le développement d’applications client. Un développeur C# spécialisé en sciences des données ou en apprentissage automatique (machine learning) peut gagner en moyenne 85 000 dollars par an. Ce chiffre est également valable pour les développeurs d’applis mobiles qui utilisent C# comme langage de développement principal. Même si l’on note un léger penchant en faveur des développeurs qui utilisent iOS de préférence à Android, ce ne semble pas trop être le cas des développeurs C# capables de travailler sur ces deux plateformes avec Xamarin. Progress.com 4
Une panoplie Manque-t-il à Visual Studio une fonctionnalité qui améliorerait l’expérience des développeurs ? Un complète grand nombre d’éditeurs développent des outils pour enrichir et améliorer l’expérience de développement au sein de Visual Studio. À titre d’exemple, Telerik by L’outil de développement le plus connu de Progress est l’éditeur de JustCode, une extension de l’écosystème C# est Visual Studio, un environnement Visual Studio qui accélère et simplifie le codage en de développement intégré (IDE). Il est important de intégrant davantage d’intelligence et de raccourcis comprendre que Visual Studio ne se limite pas au dans l’éditeur de code standard. langage C#. En fait, au cours des années qui ont abouti à la création de C#. Visual Studio était la plateforme de Avec les précédentes itérations de Visual Studio, les choix pour les développeurs d’applications Windows qui développeurs devaient acheter directement la licence utilisaient C/C++ et Visual Basic. ou disposer d’un abonnement MSDN actif. Avec Visual Studio 2015, Microsoft a introduit Visual Studio Aujourd’hui, Visual Studio prend en charge un grand Community Edition, une version gratuite de la plateforme nombre de langages, parmi lesquels C/C++, Visual Basic, Visual Studio qui permet de prendre en charge le plug-in C#, F#, Python, Ruby, HTML, JavaScript ou CSS. de votre choix. Contrairement aux précédentes versions de Visual Studio Express, toute application créée par un Une telle variété de langages supportés est rendue développeur peut être utilisée à des fins commerciales. possible par le système de plug-ins hautement extensible disponible dans l’éditeur. Il permet aux développeurs de Visual Studio est la Rolls-Royce des environnements Microsoft, et même de la communauté au sens large, de de développement. Pour certains développeurs, le développer des plug-ins qui fonctionnent directement principal obstacle réside dans le fait que l’utilisation de avec les sous-systèmes Visual Studio. Visual Studio peut s’avérer fastidieuse et qu’il tourne uniquement sous Windows. Aujourd’hui, les industriels De nombreuses fonctionnalités disponibles au sein de sont davantage favorables aux outils capables de Visual Studio contribuent à fidéliser les développeurs. fonctionner sur différentes plateformes, notamment Tout d’abord, un éditeur de code de haute performance. OSX et Linux. Lorsqu’un développeur saisit du code dans l’éditeur, Visual Studio l’accompagne directement avec une fonctionnalité appelée Intellisense. Cette fonctionnalité analyse le code à chaque frappe au clavier, et propose souvent de compléter automatiquement la saisie des variables et des méthodes. Cette capacité d’anticipation intelligente est spécifiquement conçue pour le langage de développement utilisé, ce qui signifie que C# Intellisense et CSS Intellisense permettent de résoudre le même type de problème selon des approches différentes. Les outils de débogage intégrés permettent pour leur part de cerner les problèmes spécifiques et de progresser ligne de code par ligne de code. Progress.com 5
À l’occasion de la conférence Build Microsoft 2015, Microsoft a annoncé Visual Studio Code, un éditeur de code open source conçu pour Windows, OSX et Linux. Bien que plus léger, VS Code prend en charge plusieurs fonctionnalités disponibles dans Visual Studio, intégrant notamment la mise en valeur de la syntaxe (syntax highlighting) dans plusieurs langages tels que C#, C++, F#. Elixir, Docker, Python ou Ruby ! Si VS Code n’intègre pas la solution Intellisense complète telle que disponible dans Visual Studio, cet outil propose une fonctionnalité de complétion de code (code completion) pour plusieurs langages. S’agissant des développeurs qui travaillent avec C#. Node.js et Python, VS Code dispose d’une fonction supplémentaire de débogage intégré. En combinant une architecture légère et un support multi-plateformes, VS Code constitue un excellent outil pour les développeurs qui découvrent C#. Enfin, si vous êtes déjà accro à un autre éditeur que VS Code, tout n’est pas perdu ! Les développeurs de Microsoft, ainsi que de nombreux intervenants extérieurs, ont créé un fantastique plug-in baptisé Omnisharp et qui permet d’injecter directement les meilleures parties d’Intellisense dans l’éditeur de votre choix. Actuellement, Omnisharp est compatible avec les éditeurs de code Atom, Brackets, Emacs, Sublime Text et Vim. C’est également le moteur qui propulse les fonctions de complétion du code de VS Code. Quel que soit votre choix, l’objectif sous-jacent de ces outils est de vous permettre de vivre une expérience hors pair en tant que développeur en utilisant le langage C# et le cadre .NET Framework. Progress.com 6
Un éventail de plateformes illimité En résumé, C# est un langage basé sur des normes dont le jeu de fonctionnalités a connu une évolution exponentielle au cours des 15 dernières années. En ajoutant une série d’outils de développement de haute performance, vous disposez des ingrédients indispensables pour vivre une grande carrière de développeur exclusivement tournée vers Windows. C’est bien cela ? Pas du tout ! En investissant suffisamment de temps et d’énergie en faveur de C#. il n’y a aucune limite quant au nombre de plateformes pour lesquelles vous pourrez développer des applications ! À présent, nous allons nous intéresser aux principaux environnements où les développeurs C# peuvent déployer leurs applications. La création de contrôles tels que les grilles de données et autres graphiques pourrait facilement occuper une équipe de développeurs pendant plusieurs mois. Et même dans ce cas, ces contrôles ne seraient pas aussi sophistiqués qu’avec Telerik UI for WinForms. L’un des effets secondaires de l’utilisation d’un workflow de conception convivial pour WinForms réside dans Environnement de bureau le fait que les applications se ressemblent souvent. Le terme « gris souris » (« battleship grey ») a longtemps été La création d’applications pour Windows a toujours répandu dans l’industrie car il reflétait clairement la façon été l’activité de base des développeurs C#. Au début, dont toutes les applications WinForms se présentaient. Il nos applications étaient écrites avec Windows Forms était difficile de sortir du lot, même en utilisant des outils (WinForms). Associé aux puissants outils de conception tierce partie. de Visual Studio, WinForms permet aux développeurs d’échafauder rapidement l’apparence d’une application, Avec la release C# 3.0, Microsoft a annoncé la logique métier correspondant aux interactions la fondation WPF (Windows Presentation de contrôle étant simplement exécutée à l’aide de Foundation), un framework qui repense le gestionnaires d’événements. processus de création d’applications centrées sur Windows. En lieu et place d’une approche centrée WinForms pouvait également être enrichi au moyen sur le concepteur, les développeurs peuvent de suites de contrôle tierces, telles que Telerik UI for désormais créer leurs interfaces utilisateur avec WinForms by Progress. Ces suites de contrôle offrent un un nouveau langage de marquage appelé XAML. large éventail de fonctionnalités dont sont dépourvus les contrôles fournis par défaut. Les applications créées avec WPF utilisaient encore C# « en sous-main ». Toutefois, les développeurs pouvaient désormais créer des interfaces plus robustes aussi facilement qu’en HTML. Progress.com 7
Ceux qui souhaitaient vivre une expérience de Au début de .NET et WinForms, Internet en était encore conception similaire à WinForms pouvaient utiliser à ses balbutiements. Le concept de création d’une Blend, un outil de conception similaire à Photoshop série d’applications métier sur le Web était relativement mais spécialisé dans la génération de code XAML. nouveau, et les outils disponibles ne permettaient pas Comme dans le cas de WinForms, un développeur qui de traiter des applications de cette envergure. ne voulait pas réinventer la roue pouvait utiliser l’une des fantastiques suites de contrôle tierces disponibles, Comment une entreprise centrée sur les développeurs par exemple UI for WPF. comme Microsoft est-elle parvenue à convertir des millions de développeurs qui maîtrisent WinForms et Le lancement de Windows 10 a ouvert aux des modes de conception similaires en développeurs développeurs un nouveau monde d’opportunités pour Web ? La réponse se trouve dans la naissance et Windows, qui cesse d’être un système d’exploitation le lancement de la première release d’ASP.NET de bureau. En effet, Windows peut également WebForms. fonctionner sur les terminaux Windows Mobile, Xbox One et Hololens. Tout développeur connaissant WinForms pouvait rapidement appliquer ses compétences au Web. En Avec le lancement de la plateforme Windows fait, tout comme avec WinForms, une application Universal (UWP) est apparu un environnement où les WebForms commençait par une conception, le développeurs peuvent créer une application unique contrôle des applications étant piloté au moyen de qui s’exécute en mode natif sous Windows 10, mais gestionnaires d’événements. qui peut également être déployée sur Windows 10 Mobile et Xbox One moyennant des ajustements Au cœur de WinForms se trouvait, une fois de plus, le mineurs. Sous le capot se trouve un puissant sous- langage C#. système accessible par C#. C++, Visual Basic et JavaScript. Les compétences en WPF et XAML sont Le Web a considérablement gagné en maturité facilement applicables. au cours des années qui ont suivi la création de WebForms. En 2007, ASP. NET a abandonné la Environnement Web version initiale d’ASP.NET MVC, une implémentation du Model Controller superposée à la structure ASP. Intéressons-nous à présent à la pile Web ASP.NET. NET. Les développeurs en quête d’un environnement Ces dernières années, la pile ASP.NET a vécu trois plus pur pour créer des applications Web pouvaient révolutions. utiliser ASP.NET MVC pour créer des applications qui n’étaient pas « chapeautées » par ASP. NET WebForms. Progress.com 8
Créer des applications ASP.NET avait un défaut Comme nous l’avons expliqué ci-dessus avec fondamental : la stratégie de déploiement était Universal Windows Platform, vous pouvez facilement exclusivement axée sur l’utilisation du serveur Web IIS déployer des applications sous Windows 10 Mobile (Internet Information Services) sur un serveur Windows. moyennant quelques modifications du code. La mise en œuvre et la maintenance d’un hébergement sous Windows était souvent plus coûteuse que sous Cependant, si l’on regarde la répartition du marché Linux ou des systèmes d’exploitation similaires. mobile en 2016, Windows Phone tombe sous la barre L’écosystème ASP.NET était principalement destiné aux des 3 % aux États-Unis, ses principaux concurrents entreprises qui capables d’assumer les frais de licence, étant bien sûr iOS et Android qui se partagent la ou aux sites à faible trafic qui pouvaient fonctionner majorité des utilisateurs nomades. efficacement dans des environnements partagés ou en colocation. Fin 2015, ASP.NET a connu un nouveau départ avec le lancement d’ASP.NET Core et du framework .NET Core. Contrairement à son prédécesseur, ASP.NET Core est une plateforme open-source ouverte qui réinvente la façon de fonctionner d’ASP.NET. Cette plateforme en est encore à ses balbutiements, mais imaginez qu’il soit possible de créer dans ASP.NET une application Le problème de cette industrie est le suivant : Web complète pouvant être déployée rapidement et pour développer des applications pour iOS, il faut facilement en environnement Windows, Linux, voire apprendre Objective-C ou Swift. Pour développer des OSX, sans modification du code ! applications sous Android, il faut connaître Java. Actuellement, les seuls langages pris en charge par ASP. En février 2016, Microsoft a racheté Xamarin, un NET Core sont C# et F# ; précédemment, Visual Basic framework conçu pour créer des applications iOS et était également entièrement pris en charge. Android « par-dessus » la plateforme Mono. Environnement mobile Xamarin se distingue par sa capacité à créer des applications natives pour Android, pour iOS et même Très bien. En résumé, si C# est un langage viable pour les pour Windows en utilisant la même base de code applications de bureau et pour le Web, il ne convient pas commune réalisée avec C#. Aucune autre plateforme vraiment aux développeurs qui souhaitent se spécialiser n’affiche un tel jeu de fonctionnalités. Même avec les dans les applications mobiles. C’est bien cela ? solutions mobiles multi-plateformes telles que PhoneGap ou WebView, vous disposez d’une simple coquille dans laquelle sont injectées les applications. Avec Xamarin, les développeurs disposent d’un accès direct à l’aspect et à la convivialité, ce « look & feel » que les utilisateurs d’iOS et d’Android attendent et apprécient. Progress.com 9
Faisons le point sur les plateformes sur lesquelles un développeur C# peut déployer des applications. Primo, sur le bureau (desktop), vous pouvez écrire ou gérer des applications créées avec Windows Forms, Windows Presentation Foundation et la nouvelle plateforme universelle UWP. Secundo, sur le Web, où une application peut être créée avec ASP. NET WebForms ou ASP.NET MVC. Les développeurs concentrés sur une plateforme spécifique peuvent désormais utiliser ASP.NET Core, qui leur permet de travailler non seulement sous Windows, mais également sous Linux ou OSX. Enfin, le marché mobile peut être touché en utilisant Xamarin pour créer des applications mobiles multi-plateformes qui partagent une base de code commune écrite en C#. 15 ans d’innovation et de fonctionnalités Jusqu’à présent, nous nous sommes essentiellement intéressés à l’état actuel de l’écosystème C#. L’équivalent de 15 années de plateformes et de systèmes a enrichi le langage C# initial. Ce langage n’a cependant pas atteint son apogée. Au contraire, toutes ces innovations sont possibles parce que C# continue de mûrir et d’évoluer. Quelles sont les principales fonctionnalités apparues au cours de ces 15 années d’innovation ? Si vous êtes un développeur C#. vous les connaissez probablement ! Des fonctions aussi simples que les types génériques (Generics), partiels et Nullable n’existaient pas jusqu’à la version 2.0 de la spécification C#. La version 3.0 a marqué l’introduction des méthodes d’extension (extension methods), des arbres d’expression (expression trees), des expressions Lambda (lambda expressions), etc. Ces fonctionnalités ont permis de créer les requêtes intégrées au langage LINQ (Language Integrated Query), une fonctionnalité qui, à terme, a transformé la façon dont les développeurs C# travaillent avec les données. Progress.com 10
La mouture 4.0 du langage C# a radicalement modifié la façon dont les développeurs utilisent les types, à savoir en introduisant des types dynamiques dans un langage typé statique. Les méthodes asynchrones ont été ajoutées à C# 5.0, ce qui a fourni aux développeurs un processus de création d’applications plus performantes en leur permettant d’exécuter de façon asynchrone des tâches de longue haleine. Enfin, dans C# 6.0, nous avons enregistré l’arrivée du compilateur « en tant que service » Roslyn, grâce auquel les développeurs peuvent utiliser le compilateur C# au runtime. Il fournit également des outils d’analyse de code et pilote nombre des fonctionnalités de développement intégrées à Visual Studio. Cette liste qui n’a rien d’exhaustif présente un large panorama de la façon dont C# a mûri au fil des ans. Si vous découvrez le langage C#. Prenez le temps d’examiner la liste complète des fonctionnalités mises à votre disposition. Progress.com 11
Nouveautés de C# 7.0 À présent, nous allons nous intéresser à ce qui se profile à l’horizon. En résumé, quelles sont les nouveautés du langage C# 7.0 ? Il est important de noter que les exemples et concepts suivants sont toujours en phase de preview. Leur contexte et leur syntaxe sont encore en cours de développement, et on ne peut exclure que les fonctionnalités soient modifiées ou supprimées. Variables de sortie « out » L’utilisation du mot-clé out de C# n’est en rien une nouveauté. Si vous déclarez une variable à l’intérieur d’une méthode appelée avec la variable out, vous indiquez au compilateur que vous attendez que la méthode définisse les valeurs au runtime. public void TestMethod() { string fullName; GetPersonName(“Kevin”, “Griffin”, out fullName); } En général, le problème est qu’il est nécessaire de déclarer la variable avant d’appeler la méthode en utilisant out. Avec C# 7.0, le concept de variables de sortie out vous économisera quelques frappes au clavier en vous permettant de déclarer la variable en ligne (inline). L’exemple ci-dessus peut être rapidement refactorisé: public void TestMethod() { GetPersonName(“Kevin”, “Griffin”, **out string fullName**); } Progress.com 12
En parallèle, si vous ne connaissez pas le type du paramètre, vous pouvez le remplacer par var. Filtrage par motifs (Pattern Matching) La mouture 7.0 de C# va accorder une grande importance au « filtrage par motifs » (pattern matching). En termes simples, C# 7.0 pourra voir si les données suivent un certain motif ou une certaine forme. Comme nous le verrons dans la section suivante, C# 7.0 pourra également extraire une valeur automatiquement si un modèle correspond à certains cas prédéfinis. L’exemple suivant montre le filtrage par motifs en action avec une instruction Switch : switch(person) { case CEO ceo: CallCeo(ceo); break; case Manager salesManager when (salesManager.Department == “Sales”): CallSalesManager(salesManager); break; case Manager other CallManager(other); break; default: WriteLine(“Standard employee”); break; case null: throw new ArgumentNullException(nameof(person)); } Progress.com 13
Parcourez l’instruction Switch cas par cas. Un objet « person » est injecté dans votre instruction Switch, et nous allons l’évaluer de façon différente, en fonction du type et de la forme des données de l’objet « person ». Dans le premier cas, si l’objet correspond au même motif qu’un objet CEO, nous le filtrerons (match) et appellerons le gestionnaire de cas correspondant. Ensuite, nous avons deux types d’instructions qui vérifient si l’objet est un manager. A contrario, dans le cas d’un manager du service Ventes, notre objectif est d’effectuer une fonction différente de celle que nous exécuterions avec un manager d’un autre service. L’instruction de cas (case statement) peut effectuer ce test en utilisant le mot-clé when pour effectuer un test par rapport à un objet SalesManager généré. Deux scénarios de repli existent. Généralement, nous avons par défaut passé un objet qui ne correspond à aucun des modèles précédents. Il existe également le cas null qui garantit que l’objet injecté a une valeur et qui lance une exception de référence null lorsqu’un objet null est passé à la place. Expressions « Is » En nous appuyant sur l’explication des variables out présentées ci-dessus, nous pouvons utiliser des variables de motifs pour créer des variables sur demande à l’intérieur d’un bloc de code. public void LoadPerson(object age) { if (age is int ageInt || (age is string ageString && int.TryParse(ageAsString, out ageInt))) { // ageInt contains a value. } } Dans cet exemple de code, nous avons un cas où « l’âge » d’une personne peut être utilisé dans notre application en tant que « chaîne » ou « nombre entier » (int). L’instruction If est un nombre entier, immédiatement déposée dans le corps de l’instruction if. Toutefois, si « age » est une chaîne, nous devrons effectuer une conversion en utilisant la méthode int.TryParse. Progress.com 14
Jusqu’à présent, le principal problème de TryParse était lié à la nécessité de définir la variable en dehors de l’appel de méthode TryParse. Ce n’est plus le cas avec la version 7.0 de C#. qui permet de créer la variable à la demande si la méthode TryParse renvoie la valeur True. Tuples Le type de référence Tuple a fait son apparition dans la version 3 de C#. Qu’est- ce qu’un Tuple ? En deux mots, un Tuple est une liste finie et ordonnée de valeurs. Reprenons l’exemple ci-dessus où nous avons chargé les informations associées à une personne. Plusieurs façons permettent de renvoyer les données à partir d’une méthode : public Person LoadPerson(){} public Tuple LoadPerson(){} Le premier exemple retourne un type entièrement qualifié. Selon votre cas d’utilisation, ceci est parfaitement acceptable. Mais si l’objet person est de type « jetable » (throwaway) ? Les données sont récupérées, utilisées et jetées. Le fait de créer un type person pour une seule méthode est assez fastidieux. Dans le deuxième exemple, le type générique Tuple est utilisé pour récupérer les mêmes informations. À quoi ressemble un appel à un objet LoadPerson ? public void Foo() { var person = LoadPerson(); var fullName = $”{person.Item1} {person.Item2}”; } Progress.com 15
Pour un Tuple simple à deux valeurs, nous commençons à nous éloigner de toute lisibilité. Que doit refléter un objet Item1 ou Item2 ? Est-ce, de manière respectueuse, le prénom et le nom de famille ? Le nom et l’adresse ? La ville ou le pays ? C’est difficile à savoir parce des objets Item1 et Item2 sont aussi explicites que « a » ou « b » ! Avec C# 7.0, nous pourrons accéder à de véritables Tuples selon une méthode qui reflète davantage les langages fonctionnels tels que F#. La signature de notre méthode LoadPerson () serait refactorisée comme suit : public (string firstName, string lastName) LoadPerson(){}; Notez la nouvelle syntaxe associée au type de renvoi (return). Le type de renvoi Tuple fonctionne de façon similaire au modèle que vous utilisez pour déclarer les paramètres des fonctions. Enfin, si vous voulez créer un type « Tuple inline », il suffit d’employer le mot-clé new. return new (string firstName, string lastName) { firstName = “Kevin”, lastName = “Griffin”}; Séparateurs de nombres (Digit Separators) Rangez cette fonctionnalité dans la catégorie « super utile » ! Combien de fois vous est-il arrivé de créer un littéral numérique (litteral digital) en étant obligé de compter le nombre de chiffres pour vérifier que le nombre entré était correct ? Par exemple : long Gigabyte = 1048576; Ce nombre est apparemment inoffensif, sauf si vous oubliez un chiffre ! Normalement, si vous écrivez ce nombre à la main, il sera représenté sous la forme suivante : 1 048 576, les espaces permettant de distinguer la position des nombres. Avec C# 7.0, de nouveaux « séparateurs de nombres » permettent de faire de même en utilisant un trait de soulignement (« _ ») au lieu d’un espace. Progress.com 16
long Gigabyte = 1_048_576; Au moment de la création (build time), le compilateur ignore les caractères de soulignement (« _ »). Définir des exceptions Écrire du code « défensif » est souvent synonyme de nombreuses exceptions. C# 7.0 propose de nouveaux ajustements quant aux possibilités d’injecter des exceptions. Prenons par exemple cette méthode existante : chaîne publique GetName (Person). { if (person.Name == null) throw new Exception(“Name not found”); return person.Name; } Avec les nouvelles possibilités d’injection d’exceptions, cette méthode peut être rapidement refactorisée comme suit : public string GetName(Person person) { return person.Name ?? throw new Exception(“Name not found.”); } Types de références « non nullable » L’exception Null Reference est l’une des plus courantes dans les applications .NET. Quel est le problème ? Dans C#. les types de référence ont la valeur null par défaut. Cette condition préalable oblige les développeurs à « blinder » leur code de façon permanente pour empêcher toute tentative d’accéder à une variable qui pourrait, potentiellement, être nulle au runtime. Pour des valeurs de type int ou DateTime, la valeur ne peut être nulle, sauf si vous la créez en tant que type Nullable. Progress.com 17
int? intCouldBeNull; DateTime? nullableDateTime; Et si les concepteurs de C# modifiaient simplement les valeurs par défaut ? Tous les types de référence seraient « non-null » par défaut et il faudrait alors explicitement définir une variable comme « nullable ». Ce qui reviendrait à remettre en question un code C# qui existe depuis déjà 15 ans. Et si, comme alternative, nous pouvions déclarer explicitement qu’un type de valeur est « non nullable » ? Avec C# 7.0, l’opérateur « ! » est utilisé pour déclarer qu’une variable est non nulle. string! nonNullableString; Person! nonNullablePerson; En utilisant l’opérateur « ! », nous indiquons à C# que la valeur des objets nonNullableString et nonNullablePerson ne doit jamais être nulle. Le passage d’une valeur nulle devrait provoquer une alerte ou une erreur au niveau du compilateur. À fondation stable, carrière stable Que vous soyez néophyte ou chevronné, vous devez prendre une décision importante quant aux technologies de codage que vous souhaitez maîtriser. Au fil du temps, C# a démontré sa parfaite stabilité tout en étant capable d’évoluer pour s’adapter aux nouveaux besoins des développeurs. Actuellement en preview, la dernière version C# 7.0 affiche un grand nombre de nouvelles fonctionnalités conçues pour rendre le code encore plus facile à lire et à écrire. Progress.com 18
Selon Stack Overflow, la ressource la plus fiable pour les développeurs sur Internet, le langage C# est l’une des cinq plateformes technologiques les plus importantes au monde. Si l’on compare la liste des technologies les plus performantes et celle des langages préférés des développeurs, seul C# entre dans les deux catégories. Même Java, qui compte également parmi les meilleures technologies de l’industrie, ne peut se targuer d’être le chouchou des développeurs. Cerise sur le gâteau, un développeur spécialisé dans le langage C# peut, en moyenne, gagner entre 85 000 dollars et 95 000 dollars par an. En résumé, le langage C# est une triple menace : aimé, demandé et valorisé. La vie d’un développeur en C# ne se limite pas à la création d’applications Windows qui se ressemblent toutes. Comme nous l’avons vu, C# permet de créer des applications Windows sur la nouvelle plateforme Windows universelle UWP, ainsi que d’utiliser les compétences disponibles pour prendre en charge les anciennes applications Windows Forms. Les développeurs d’applications Web peuvent à présent créer des applications Web entièrement fonctionnelles qui tournent sous Windows Server, Linux ou OSX. Le framework Xamarin permet aux développeurs C# de créer des bases de code partagées pouvant être utilisées pour créer des applications mobiles natives. Progress.com 19
Les applications les plus performantes doivent s’appuyer sur des environnements de développement tout aussi performants. Depuis plus de 15 ans, Visual Studio est la Cadillac des environnements de développement intégrés (IDE). Avec des fonctionnalités telles qu’Intellisense, un débogueur exceptionnel et un riche écosystème d’extensions fournies par des partenaires, Visual Studio continue de repousser les limites du concept-même d’IDE. Les développeurs qui ne requièrent pas toute la puissance de Visual Studio, ou qui souhaitent disposer d’une puissance comparable sur OSX ou Linux, opteront pour Visual Studio Code, une solution open source et multi-plateformes qui assure une expérience de codage étonnante avec un outil plus compact. Si vous possédez déjà un éditeur et que rien ne pourra vous faire changer d’avis, le plug-in Omnisharp vous permettra d’intégrer l’expérience C# Intellisense dans l’éditeur de votre choix. Est-ce que le langage C# est un bon choix ? Les arguments avancés ci-dessus parlent d’eux-mêmes quant à sa viabilité à long terme, à son vaste écosystème d’outils de développement et aux multiples endroits où vos connaissances pourront être mises à profit. Que vous visiez les environnements de bureau, le Web ou les terminaux mobiles, le langage C# est un pari gagnant pour les années à venir. Progress.com 20
Telerik DevCraft™ by Progress ® Intégré à la suite Telerik® DevCraft™ by Progress, l’outil Telerik UI for ASP.NET MVC comprend plus de 70 composants d’interface utilisateur (UI) et des milliers de fonctionnalités que nous avons développées au fil des ans pour vous éviter de créer une interface utilisateur de A à Z. Vous disposez ainsi d’une vaste panoplie de contrôles, des incontournables outils d’aide HTML pour chaque appli (grilles, listes déroulantes et menus) aux interfaces utilisateur avancées adaptées à vos différents métiers : graphiques, diagrammes de Gantt, ordonnanceur (Scheduler), Pivot, Grilles PivotGrid et cartes (Maps). Evaluer Telerik DevCraft À propos de Progress Progress (NASDAQ : PRGS) est un spécialiste mondial du développement d’applications et de la transformation digitale. En facilitant la création d’expériences utilisateurs riches, ses produits et solutions favorisent l’engagement client pour répondre à l’évolution des attentes des consommateurs. L’offre de Progress, qui peut être déployée sur-site ou sur le Cloud, permet l’exploitation des données via des applications Web et mobiles pour assurer le succès des entreprises partout dans le monde, depuis les jeunes start-ups jusqu’aux géants internationaux. Pour contacter Progress France, contactez-nous au 01.41.16.16.00 ou visitez le site www.progress.com. Siège mondial Progress Progress, 14 Oak Park, Bedford, MA 01730 USA Tel: +1 781 280-4000 Fax: +1 781 280-4095 Sur le Web : www.progress.com Sur les réseaux sociaux : facebook.com/progresssw twitter.com/progresssw youtube.com/progresssw Bureaux internationaux et régionaux : www.progress.com/worldwide Progress est une marque déposée de Progress Software Corporation ou l’une de ses filiales ou sociétés affiliées aux États-Unis et d’autres pays. Les autres noms mentionnés peuvent être des marques de leurs propriétaires respectifs. © 2017 Progress Software Corporation et/ou ses sociétés affiliées ou filiales. Tous droits réservés. Rev 01/2017 | 170110-0023 Progress.com 21
Vous pouvez aussi lire