Bạn có nên sử dụng C # và F # cùng nhau


16

Tôi biết bạn có thể sử dụng C # và F # trong cùng một dự án tuy nhiên tôi không chắc có nên làm như vậy không.

Dường như với tôi, việc trộn hai phong cách mã hóa rất khác nhau (chức năng so với OOP) có thể gây ra sự thiếu gắn kết trong thiết kế. Điều này có đúng không?


1
Làm thế nào bạn có thể sử dụng chúng trong cùng một dự án? Bạn có nghĩa là cùng một giải pháp?
Bryan Boettcher

2
Không phải định nghĩa của Microsoft về dự án mà là định nghĩa chung hơn
Tom Squires

Một nhược điểm rõ ràng là nếu ít nhất một phần công việc trong dự án yêu cầu nhà phát triển tương tác với cả hai phần trong C # và trong F # (thậm chí chỉ để đọc chúng), những phần đó sẽ yêu cầu nhà phát triển am hiểu cả hai ngôn ngữ và có ít hơn so với những người am hiểu chỉ bằng một ngôn ngữ, và do đó chúng khó tìm hơn, có khả năng đắt hơn và có ít loại hơn (trong trường hợp cụ thể này mặc dù có vẻ như hầu hết các nhà phát triển F # cũng có ít nhất sự quen thuộc với C #) .
gbr

chắc chắn rồi. ví dụ: dần dần đưa F # vào một giải pháp C # cũ là một kịch bản hợp lệ.
KolA

Câu trả lời:


23

Không có gì sai khi trộn các ngôn ngữ trong một sản phẩm miễn là bạn sử dụng từng ngôn ngữ một cách thích hợp và chúng "chơi đẹp" với nhau.

Nếu có một phần của dự án của bạn sẽ được mã hóa tốt nhất bằng ngôn ngữ chức năng thì việc mã hóa nó trong F # là điều hợp lý. Tương tự cho C #.

Điều gì là vô nghĩa (tốt nhất) sẽ là trộn lẫn các ngôn ngữ vì lợi ích của nó.


0

Dường như với tôi, việc trộn hai phong cách mã hóa rất khác nhau (chức năng so với OO) có thể gây ra sự thiếu gắn kết trong thiết kế. Đúng không?

Tôi không nghĩ bạn sẽ bị "thiếu sự gắn kết". Mỗi ngôn ngữ có điểm mạnh và điểm yếu. Kết hợp chúng trong thời gian chạy ngôn ngữ chung cho phép bạn đến gần hơn với thế giới tốt nhất. Với C # và F #, bạn chỉ muốn đảm bảo rằng bạn sử dụng giao điểm của hai ngôn ngữ tại giao diện giữa hai ngôn ngữ trong giải pháp của bạn.


0

Có, tôi đồng ý với ChrisF . Ngoài ra C # hiện đã kết hợp các nguyên tắc F #, chẳng hạn như các loại ẩn danh:

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

Điều đó nói rằng, cá nhân tôi nghĩ rằng đó là một bước lùi về khả năng đọc mã, mặc dù nó rất thuận tiện.


2
Các loại ẩn danh không thực sự là một nguyên tắc F #. Có thể bạn muốn nói đến suy luận kiểu ( từ khóa var làm gì trong C #), theo đó trình biên dịch đoán loại bạn đang đề cập đến. Điều này được sử dụng trong suốt F #.
Mongus Pong

1
Tôi sẽ sử dụng F # cho các khả năng async dễ dàng. Tuy nhiên, TPL đã làm cho nó khá dễ dàng để làm điều đó trong C #. Nếu bạn đã nhúng một ngôn ngữ để viết kịch bản, tôi chắc chắn sẽ sử dụng F # để phân tích cú pháp đó.
Jetti
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.