C # ve F # tuşlarını birlikte kullanmanız durumunda


16

Aynı projede C # ve F # birlikte kullanabileceğinizi biliyorum ancak bunu yapmak için iyi bir fikir olup olmadığından emin değilim.

Bana öyle geliyor ki, iki farklı kodlama stilini (OOP'a karşı işlevsel) karıştırmak, tasarımda uyum eksikliğine neden olabilir. Bu doğru mu?


1
Bunları aynı projede nasıl kullanabilirsiniz? Aynı çözümü mü demek istiyorsun?
Bryan Boettcher

2
Projenin Microsoft Tanımı değil, daha genel tanım
Tom Squires

Bariz bir dezavantaj, proje üzerindeki çalışmanın en azından bir kısmının geliştiricinin C # ve F #'daki her iki bölümle etkileşime girmesini gerektirmesi durumunda (sadece okumak için bile), bu bölümlerin her iki dilde de bilgili bir geliştirici gerektirmesi ve bunlardan sadece bir dilde bilgili olanlardan daha azdır ve bu nedenle bulmak daha zordur, potansiyel olarak daha pahalıdır ve daha az çeşitliliği vardır (bu özel durumda, çoğu F # geliştiricisinin en azından C # ile aşina olması muhtemeldir) .
gbr

kesinlikle. örneğin yavaş yavaş eski bir C # çözümüne F # eklemek geçerli bir senaryodur.
KolA

Yanıtlar:


23

Her birini uygun şekilde kullandığınız ve birlikte "iyi oynadıkları" sürece bir üründe dilleri karıştırmanın yanlış bir yanı yoktur.

Projenizin fonksiyonel bir dil kullanılarak en iyi kodlanacak bir parçası varsa, F # ile kodlamak mantıklıdır. Benzer şekilde C # için.

Anlamsız (en iyisi) dilleri bunun için karıştırmak olurdu.


0

Bana öyle geliyor ki, iki farklı kodlama stilini (OO'ya karşı işlevsel) karıştırmak, tasarımda uyum eksikliğine neden olabilir. Bu doğru mu?

"Uyum eksikliği" elde edeceğinizi sanmıyorum. Her dilin güçlü ve zayıf yanları vardır. Bunları ortak bir çalışma zamanında birleştirmek, her iki dünyanın en iyilerine yaklaşmanıza olanak tanır. C # ve F # ile, çözümünüzdeki iki dil arasındaki arabirimde iki dilin kesişimini kullandığınızdan emin olmak istersiniz.


0

Evet, ChrisF ile hemfikirim . Ayrıca C # şu anda anonim türler gibi F # ilkelerini zaten içeriyor:

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

Bununla birlikte, kişisel olarak kod okunabilirliğinde bir adım geri olduğunu düşünüyorum, ancak çok uygun.


2
Anonim türler gerçekten bir F # prensibi değildir. Derleyicinin hangi türden bahsettiğinizi tahmin ettiği tür çıkarımına ( var anahtar kelimesinin C # 'da ne yaptığı ) atıfta bulunmak isteyebilirsiniz. Bu F # boyunca kullanılır.
Mongus Pong

1
Kolay eşzamansız yetenekler için F # kullanırdım. Ancak, TPL bunu C # 'da tek başına yapmayı oldukça kolaylaştırdı. Senaryo yazımı için bir dil yerleştirseydin, bunun ayrıştırılması için kesinlikle F # kullanırdım.
Jetti
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.