De la syntaxe des types implicites dans VB 9 et C# 3
Il y a en ce moment une grande discussion avec l'équipe de dev de VB sur la syntaxe des types implicites.
Je ne sais pas comment cela se passe avec l'équipe C#, mais l'équipe VB (Amanda, Paul & co) sont vaiment supers pour ca, ouvert et à l'écoute. Cela me rapelle il y a quelques années lors de la discussion de la syntaxe des générics.
Bref, pour mémoire, Type Implicite késaco ?
Dans les VB9 LINQ Documentation preview, vous pouvez écrire :
Dim x = 5
Dans votre dos, le compilateur déclarera automatiquement votre variable x comme Integer (la ligne équivaut à Dim x as Integer = 5). En C#, cela donne :
var x = 5;
Pourquoi cela ? Pourquoi vouloir (et pouvoir) déclarer des variables comme cela ? Le principal intérêt réside dans les projections, ie l'extraction de partie de données. Par exemple :
Dim personnes = Select Dim New (cust.Name, cust.City) From cust In Customers
Le compilateur créera un nouveau type, avec deux propriétés (Name et City) que vous pourrez manipuler localement. Vous voyez que le travail vous est grandement simplifié (pas besoin de créer un nouveau type alors que vous n'en avez besoin qu'à cet endroit).
Bref, là ou je veux en venir concerne justement cette syntaxe. Dans les deux langages, la syntaxe proposée pour l'instant est à mon avis catastrophique (enfin pas terrible quoi). En VB on ne dit rien (alors que le travail du compilateur est loin d'être négligeable) et en C# on a l'impression de revenir au temps des variant. De plus x est tout sauf var-iable!
Les syntaxes VB comme C# peuvent, dans des mains "mal attentionnées" arriver à une complexification du code généré alors qu'il n'y en avait nullement besoin.
De mon avis, il faut une syntaxe qui montre que l'on sait ce que l'on est en train de faire, que l'on demande "explicitement" au compilateur de trouver ou créer le type adapté.
Donc un certain nombre de MVP ont commencés à proposer une nouvelle syntaxe. En voici un petit lot :
Dim x As ? = 5
Infer x = 5
Dim x As Implicit = 5
Dim x As Inferred = 5
Auto Dim x = 5
J'aime pas le premier (même si Bill l'aime bien ;-)), car il sous entend que vous ne savez pas ce qu'est x (alors que vous savez pertinamment que c'est un Int32).
Les trois suivant me semblent un peu trop "techniques" et l'utilisation de Implicit risque de provoqueur des confusions.
J'aime bien le dernier mais il ne me satisfait pas encore complètement.
DONC
Si vous avez des idées, on est preneur (et j'espère que l'équipe C# se penche aussi sur le problème car var, c'est pas terrible du tout!)
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :