Si vous utilisez C # et F # ensemble

16

Je sais que vous pouvez utiliser C # et F # ensemble dans le même projet, mais je ne sais pas si c'est une bonne idée de le faire.

Il me semble que mélanger deux styles de codage très différents (fonctionnel vs OOP) pourrait entraîner un manque de cohésion dans la conception. Est-ce correct?

Tom Squires
la source
1
Comment pouvez-vous les utiliser dans le même projet? Voulez-vous dire la même solution?
Bryan Boettcher
2
Pas la définition de projet Microsoft mais la définition plus générale
Tom Squires
Un inconvénient évident est que si au moins une partie du travail sur le projet nécessite que le développeur interagisse avec les deux sections en C # et en F # (même juste pour les lire), ces parties nécessiteront un développeur compétent dans les deux langues, et il y a moins d'entre eux que ceux qui connaissent bien une seule langue, et donc ils sont plus difficiles à trouver, potentiellement plus chers et il y en a moins (dans ce cas spécifique, bien qu'il soit probable que la plupart des développeurs F # aient au moins une certaine connaissance de C # également) .
gbr
absolument. Par exemple, l'introduction progressive de F # dans une solution C # héritée est un scénario valide.
KolA

Réponses:

23

Il n'y a rien de mal à mélanger les langues dans un produit tant que vous les utilisez correctement et qu'ils "jouent bien" ensemble.

S'il y a une partie de votre projet qui serait mieux codée en utilisant un langage fonctionnel, alors il est logique de la coder en F #. De même pour C #.

Ce qui serait inutile (au mieux) serait de mélanger les langues pour le plaisir.

ChrisF
la source
0

Il me semble que mélanger deux styles de codage très différents (fonctionnel vs OO) pourrait entraîner un manque de cohésion dans la conception. Est-ce exact?

Je ne pense pas que vous obtiendrez un "manque de cohésion". Chaque langue a ses forces et ses faiblesses. Les combiner sur une exécution en langage commun vous permet de vous rapprocher du meilleur des deux mondes. Avec C # et F #, vous voulez juste vous assurer que vous utilisez l'intersection des deux langages à l'interface entre les deux dans votre solution.

Jon Harrop
la source
0

Oui, je suis d'accord avec ChrisF . De plus, C # intègre déjà déjà les principes F #, tels que les types anonymes:

var unitanon = new[]
{
    new { Field1="new car", Field2 = 1},
    new { Field1="old car", Field2 = 20} 
};

Cela dit, je pense personnellement que c'est un pas en arrière dans la lisibilité du code, même si c'est très pratique.

PaulDécembre
la source
2
Les types anonymes ne sont pas vraiment un principe F #. Peut-être voulez-vous faire référence à l'inférence de type (ce que fait le mot-clé var en C #) par laquelle le compilateur devine de quel type vous parlez. Ceci est utilisé dans F #.
Mongus Pong
1
J'utiliserais F # pour les capacités asynchrones faciles. Cependant, le TPL a rendu assez facile de le faire en C # par lui-même. Si vous deviez intégrer un langage de script, j'utiliserais certainement F # pour l'analyse de cela.
Jetti