C# : un langage d'avenir pour les développeurs ? - Par Kevin Griffin - Bitpipe

La page est créée Jean Gauthier
 
CONTINUER À LIRE
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