C#とF#を一緒に使用すべきか


16

同じプロジェクトでC#とF#を一緒に使用できることは知っていますが、それが良いアイデアかどうかはわかりません。

2つの非常に異なるコーディングスタイル(機能的とOOP)を混在させると、デザインの凝集性が失われる可能性があります。これは正しいです?


1
同じプロジェクトでどのように使用できますか?同じ解決策ですか?
ブライアンベッチャー

2
プロジェクトのマイクロソフト定義ではなく、より一般的な定義
トムスクワイアズ

明らかな欠点の1つは、プロジェクトの作業の少なくとも一部で、開発者がC#とF#の両方のセクションを(単に読むだけでも)対話する必要がある場合、それらの部分は両方の言語に精通した開発者を必要とし、 1つの言語に精通している人よりも少ないため、見つけるのが難しく、潜在的に高価であり、それらの多様性もありません(この特定のケースでは、ほとんどのF#開発者が少なくともC#にある程度精通している可能性があります) 。
gbr

絶対に。たとえば、F#をレガシC#ソリューションに徐々に導入することは有効なシナリオです。
KolA

回答:


23

各言語を適切に使用し、それらが一緒に「うまく再生」される限り、製品で言語を混合しても問題はありません。

関数型言語を使用してコード化するのに最適なプロジェクトの部分がある場合、F#でコード化することは理にかなっています。C#についても同様です。

(せいぜい)無意味なのは、そのために言語を混合することです。


0

2つの非常に異なるコーディングスタイル(機能的とオブジェクト指向)を混在させると、デザインの凝集性が失われる可能性があります。あれは正しいですか?

私はあなたが「結束の欠如」を得るとは思わない。各言語には長所と短所があります。共通言語ランタイムでそれらを組み合わせることにより、両方の世界のベストに近づくことができます。C#とF#では、ソリューションの2つの言語間のインターフェイスで2つの言語の共通部分を使用することを確認したいだけです。


0

はい、ChrisFに同意します。また、C#には現在、匿名型などのF#の原則が既に組み込まれています。

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

とはいえ、個人的には非常に便利ですが、コードの可読性が一歩後退していると思います。


2
匿名型は、実際にはF#の原則ではありません。型推論(C#でvarキーワードが行うこと)を参照することを意味する場合があります。これにより、コンパイラは、参照している型を推測します。これはF#全体で使用されます。
モンガスポン

1
簡単な非同期機能にはF#を使用します。ただし、TPLを使用すると、C#でそれを簡単に実行できます。ただし、スクリプト用の言語を埋め込む場合は、その解析に間違いなくF#を使用します。
ジェッティ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.