Cette semaine, Microsoft a rendu disponible la tant attendue Release Candidate de VS 2010. Pour avoir testé la béta 2, je faisais partie de ceux qui étaient en faveur d'une révision générale des performances.
Après avoir testé intensivement cette nouvelle mouture, je crois qu'on peut le dire haut et fort : Microsoft a écouté la communauté. Cette RC est un vrai bijou.
Suite:
Plus que les aspects techniques (utilisation en profondeur de WPF pour le fenêtrage), VS 2010 apporte un nombre considérable de nouveautés. Que ce soit au niveau de l'éditeur de code ou dans la richesse des concepteurs en tous genres, le périmètre fonctionnel de l'IDE a pris un violent coup de fouet.
Pour avoir souvent critiqué la culture consistant à glisser-déplacer des datagrid sur des IHM, là je dois avouer qu'il n'est plus question ici de Quick & Dirty. Tout d'abord, cette version est la première à introduire UML, j'ai testé les différents diagrammes (séquences, use case, layer, etc.), non seulement ils fonctionnent parfaitement mais on dispose également du reverse engineering (notamment pour le diagramme de séquence).
Côté éditeur, c'est là où les progrès sont les plus criants. Les codeurs .NET ont toujours été handicapés par la pauvreté des fonctionnalités de refactoring de VS 2005 et VS 2008, largement dépassés par ses concurrents et contraignant les développeurs à utiliser le plugin payant Resharper. Il faut l'avouer, VS 2010 a pris (presque) tout ce qu'il y avait de bon dans Eclipse. Le fameux raccourci « Find Type » (Ctrl+Shit+T ou Ctrl+Shift+R) permettant de localiser n'importe qu'elle classe ou ressource par son nom ou ses acronymes. Vous recherchez la classe ApplicationContext, tapez « AC ». Cette fonctionnalité identifiée par le nouveau raccourci spécial (Ctrl + virgule) s'appelle le « Navigate To ».
Même progrès concernant la recherche des références et des hiérarchies d'appels (l'équivalent Eclipse du Ctrl-T sur une fonction). On se positionne sur une méthode et un simple Ctrl-K+ Ctrl+T nous affiche une fenêtre (très évoluée) sur les différents appelants et leurs types respectifs.
Autre fonctionnalité qui va combler ceux qui, comme moi, réalisent de nombreux audits de code, c'est « l'architecture Explorer ». Ce nouveau composant graphique affiche dans une seule et même fenêtre synthétique, les projets, les fichiers, les types et les méthodes d'une solution.
Et je vous passe les aspects liés au refactoring avec la possibilité d'extraire des types, renommer des variables, mettre en surbrillance la référence courante (là encore comme dans Eclipse).
Avec .NET ou Java, il faut avouer que jusqu'à présent, on n'a jamais réussi à atteindre le niveau de productivité atteint par les Powerbuilder, WinDev, NSDK où tous ces L4G qui ont eu leurs années de gloire il y a plus d'une décennie. Ces outils mettaient l'utilisateur, le développeur au centre de l'échiquier. J'ai toujours rêvé d'un IDE moderne où je puisse créer ma base de données ou mon modèle du domaine, ouvrir un concepteur graphique et générer ou retro-concevoir mon application par simple glisser-déposer en utilisant les concepts d'architecture n-tiers et de séparation des couches. J'ai toujours rêvé d'un IDE où je puisse concevoir mes écrans par simple « binding » des widgets avec mon modèle du domaine affiché graphiquement et me proposant la liste des propriétés métier. Sans jamais écrire une seule ligne de code excepté la glue entre mes fenêtres et l'implémentation des services.
Jusqu'à présent, certains outils ou éditeurs proposaient (dans le monde Java ou .NET) certaines briques (Hibernate Tools pour JBoss, EclipseLink pour Oracle) mais rien couvrant la chaîne de bout en bout. De la construction des IHM jusqu'au mapping objet/relationnel.
VS 2010 est peut-être en train de gagner ce pari. Non seulement on est en mesure de créer des écrans (WinForms, WPF ou Silverlight) via un WYSIWYG mais on peut également brancher sur chaque contrôle graphique un DataContext relié aux objets du domaine, eux même créés visuellement. Un assistant nous propose de naviguer à l'intérieur des classes et propriétés de l'objet à binder.
Une fois bindé, il est possible de régler visuellement le mode de validation (simple ou unidirectionnel) et de conversion (types de données différents). Un must absolu !
J'ai fait un test assez poussé. En prenant une base de données aux antipodes de l'écosystème Microsoft, SQLite. Il est possible de créer à l'intérieur de VS ses différentes tables, puis de générer un modèle du domaine. A partir de ce modèle, on relie les IHM, les services et les POCO (Plain Old C# Beans) via le mécanisme de DataBinding. Là où j'aurais préféré un peu plus de glue, c'est dans la génération des écrans à partir du modèle du domaine. A une époque pas si lointaine, il suffisait de glisser déposer une table sur un formulaire pour voir apparaître un joli Datagrid. Pourquoi ne pas proposer l'équivalent mais en glissant des collections ou de simples POCO issues du domaine. Il n'y a aujourd'hui aucun lien physique entre la vue VS du domaine et la vue WYSIWYG des IHM.
Dernière fonctionnalité qui attirera l'attention des puristes, le gestionnaire de dépendances entièrement vectoriel. Il suffit de sélectionner une assembly, un package ou une classe pour voir le graphe de dépendances s'afficher. Même s'il est loin d'atteindre la richesse fonctionnelle d'un NDepend, il ravira les débutants du domaine.
Je finirai ce billet sur une chose. Le pari de VS 2010 n'est pas simplement de fournir un environnement tout intégré en incorporant le meilleur de tous les mondes (UML, Eclipse, ORM, etc .). Son principal pari est d'avoir réussi à intégrer WPF dans son ergonomie. Chaque action qu'on effectue dans l'éditeur nous rappelle qu'il y a derrière un moteur vectoriel, les effets de transitions dans les champs du magnifique inspecteur de propriétés, le fait de détacher sa fenêtre en cliquant deux fois sur son titre ou de bénéficier automatiquement du zoom en cas de redimensionnement d'un graphe. Et que dire de la roulette de la souris pour augmenter instantanément la taille du code, le tout avec une fluidité rare.
Personne au monde aujourd'hui ne peut se targuer d'avoir un IDE vectoriel. En tentant ce pari risqué, Microsoft s'ouvre un spectre de fonctionnalités nouveau et nous prouve sa capacité à ingurgiter ses propres technologies (« eat your own dog food » comme disent les anglos-saxons). Il tacle également au passage son principal rival Eclipse qui a fait le choix d'un framework bitmap vieillissant (SWT/JFace). L'ergonomie d'Eclipse n'a pas évolué depuis une dizaine d'années et il est de plus en plus difficile de personnaliser ses composants .
Bref, plus de jamais, je reste un des premiers fans de .NET .
Merci pour les Hints.
Une toute petite question toutefois. Es-tu sûr que POCO = Plain Old C# Bean ? N'est-ce pas plutôt Plain Old Clr Object ?
HM