- Absence de paramètres optionels en C#.... ce qui est en fait une bonne chose.
Bien utilisée, c'est une fonctionnalité qui peut être vraiment pratique.
Les paramètres optionels, ça peut réduire la lisibilité du code
Comme toute fonctionnalité : mal utilisée, c'est moche.
1 2 3 4
| Public Overloads Function foo(bar as long = 0, foobar as long = 0)
End Function
Public Overloads Function foo(bar as long = 0)
End Function |
Tu peux considérer que le problème vient de programmeur (mais je comprends que ça puisse arriver involontairement). Tu peux aussi, et surtout, considérer que le problème vient de l'implémentation de cette fonctionnalité. Le compilateur devrait détecter l'ambigüité (je suis étonné que VB ne le fasse pas). Surtout que ça ne devrait pas être compliqué à faire.
Mais pour moi, ce n'est pas un problème dû à la fonctionnalité. Car tu pourrais tout aussi bien reprocher au langage d'autoriser la surcharge, précisément pour la même raison. Il existe d'ailleurs des langages qui possèdent les arguments optionnels, mais pas la surcharge (OCaml...).
void f1(params String[] para)
Non. Ce n'est vraiment pas pareil. D'une part, c'est moche de créer un tableau pour ça. Et surtout, c'est dangereux. La taille du tableau ne faisant pas partie du type, le compilateur ne peut pas vérifier que l'appel est correct. Je serais triste si une fonction d'une bibliothèque plante à l'exécution, juste parce que j'ai mis un argument de trop !
Et sinon, pour répondre à la question de départ, j'ai choisi F#. La puissance de la programmation fonctionnelle, la concision des langages dynamiques, la sûreté des langages à typage très fort, tout ça combiné aux avantages de .NET. Dommage qu'il ne soit pas proposé dans le sondage (et j'ai l'impression d'être le seul développeur F# de tout le forum).
Partager