คุณควรใช้ C # และ F # ด้วยกัน


16

ฉันรู้ว่าคุณสามารถใช้ C # และ F # ร่วมกันในโครงการเดียวกันได้ แต่ฉันไม่แน่ใจว่ามันเป็นความคิดที่ดีหรือไม่

สำหรับฉันแล้วการผสมสองรูปแบบการเข้ารหัสที่แตกต่างกันมาก (functional vs OOP) อาจทำให้เกิดการขาดการเชื่อมโยงในการออกแบบ ถูกต้องหรือไม่


1
คุณจะใช้มันในโครงการเดียวกันได้อย่างไร คุณหมายถึงทางออกเดียวกันหรือไม่
ไบรอัน Boettcher

2
ไม่ใช่ Microsoft Definition ของโครงการ แต่เป็นคำจำกัดความทั่วไป
Tom Squires

ข้อเสียเปรียบอย่างหนึ่งที่เห็นได้ชัดคือถ้าอย่างน้อยส่วนหนึ่งของงานในโครงการต้องการให้ผู้พัฒนาโต้ตอบกับทั้งสองส่วนใน C # และใน F # (แม้เพียงแค่อ่าน) ส่วนเหล่านั้นจะต้องการนักพัฒนาที่มีความรู้ทั้งสองภาษาและมี น้อยกว่าผู้ที่มีความรู้ในภาษาเดียวและทำให้หายากอาจมีราคาแพงและมีความหลากหลายน้อยกว่า (ในกรณีนี้แม้ว่าเป็นไปได้ว่านักพัฒนา F # ส่วนใหญ่มีความคุ้นเคยกับ C # เป็นอย่างน้อย) .
gbr

อย่างแน่นอน เช่นค่อยๆแนะนำ F # เข้ากับโซลูชัน C # ดั้งเดิมเป็นสถานการณ์ที่ถูกต้อง
KolA

คำตอบ:


23

ไม่มีอะไรผิดปกติกับภาษาผสมในผลิตภัณฑ์ตราบใดที่คุณใช้แต่ละภาษาอย่างเหมาะสมและพวกเขา "เล่นดี" ด้วยกัน

หากมีส่วนหนึ่งของโครงการของคุณที่จะได้รับการเข้ารหัสที่ดีที่สุดโดยใช้ภาษาที่ใช้งานได้ก็ควรทำการเขียนโค้ดใน F # ในทำนองเดียวกันสำหรับ C #

สิ่งที่จะไม่มีจุดหมาย (ที่ดีที่สุด) จะเป็นการผสมผสานภาษาเพื่อประโยชน์ของมัน


0

สำหรับฉันแล้วการผสมสไตล์การเขียนโค้ดสองแบบ (functional vs OO) อาจทำให้เกิดการขาดการทำงานร่วมกันในการออกแบบ ถูกต้องหรือไม่

ฉันไม่คิดว่าคุณจะได้รับ "ขาดการทำงานร่วมกัน" แต่ละภาษามีจุดแข็งและจุดอ่อน การรวมเข้ากับเวลาใช้งานทั่วไปช่วยให้คุณเข้าใกล้สิ่งที่ดีที่สุดของโลกทั้งสอง ด้วย C # และ F # คุณเพียงแค่ต้องการให้แน่ใจว่าคุณใช้จุดตัดของสองภาษาที่อินเตอร์เฟสระหว่างสองภาษาในโซลูชันของคุณ


0

ใช่ผมเห็นด้วยกับChrisF ในปัจจุบัน C # ได้รวมหลักการ F # ไว้แล้วเช่นประเภทที่ไม่ระบุชื่อ:

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

ที่กล่าวว่าฉันเองคิดว่ามันเป็นขั้นตอนย้อนกลับในการอ่านรหัสแม้ว่าจะสะดวกมาก


2
ประเภทนิรนามไม่ใช่หลักการ F # จริงๆ คุณอาจหมายถึงการอ้างถึงการอนุมานประเภท (สิ่งที่คำหลักvarทำใน C #) โดยคอมไพเลอร์คาดเดาประเภทที่คุณอ้างถึง สิ่งนี้ใช้ตลอด F #
Mongus Pong

1
ฉันจะใช้ F # สำหรับความสามารถในการซิงค์ที่ง่าย อย่างไรก็ตาม TPL ทำให้มันง่ายในการทำเช่นนั้นใน C # ด้วยตัวเอง หากคุณต้องฝังภาษาสำหรับการเขียนสคริปต์ฉันจะใช้ F # ในการแยกวิเคราะห์อย่างแน่นอน
Jetti
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.