Powinieneś używać C # i F # razem


16

Wiem, że możesz używać C # i F # razem w tym samym projekcie, jednak nie jestem pewien, czy to dobry pomysł.

Wydaje mi się, że mieszanie dwóch bardzo różnych stylów kodowania (funkcjonalny vs OOP) może powodować brak spójności w projekcie. Czy to jest poprawne?


1
Jak wykorzystać je w tym samym projekcie? Masz na myśli to samo rozwiązanie?
Bryan Boettcher

2
Nie Microsoft Definicja projektu, ale bardziej ogólna definicja
Tom Squires

Jedną oczywistą wadą jest to, że jeśli przynajmniej część pracy nad projektem wymaga, aby programista współdziałał z obiema sekcjami w języku C # i F # (nawet tylko po to, aby je przeczytać), te części będą wymagały od programisty znajomości obu języków, a istnieją mniej z nich niż tych, którzy znają tylko jeden język, a zatem są trudniejsze do znalezienia, potencjalnie droższe i jest ich mniej różnorodnych (w tym konkretnym przypadku, choć jest prawdopodobne, że większość programistów F # również zna przynajmniej trochę C #) .
gbr

absolutnie. np. stopniowe wprowadzanie F # do starszego rozwiązania C # jest prawidłowym scenariuszem.
KolA

Odpowiedzi:


23

Nie ma nic złego w mieszaniu języków w produkcie, o ile odpowiednio używasz każdego z nich, a one „dobrze się bawią”.

Jeśli jest część twojego projektu, która najlepiej byłaby zakodowana przy użyciu funkcjonalnego języka, wówczas sensowne jest zakodowanie jej w języku F #. Podobnie dla C #.

To, co byłoby bezcelowe (w najlepszym wypadku), byłoby mieszanie języków dla samej korzyści.


0

Wydaje mi się, że mieszanie dwóch bardzo różnych stylów kodowania (funkcjonalny vs OO) może powodować brak spójności w projekcie. Czy to jest poprawne?

Nie sądzę, żebyś miał „brak spójności”. Każdy język ma swoje mocne i słabe strony. Łączenie ich w czasie wykonywania w języku potocznym pozwala zbliżyć się do najlepszych z obu światów. Używając C # i F #, po prostu chcesz się upewnić, że używasz przecięcia dwóch języków na interfejsie między nimi w swoim rozwiązaniu.


0

Tak, zgadzam się z ChrisF . Również C # obecnie zawiera już zasady F #, takie jak typy anonimowe:

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

To powiedziawszy, osobiście uważam, że jest to krok wstecz w zakresie czytelności kodu, chociaż jest to bardzo wygodne.


2
Anonimowe typy nie są tak naprawdę zasadą F #. Może masz na myśli odwoływanie się do typu (co robi słowo kluczowe var w języku C #), dzięki czemu kompilator zgadnie, do jakiego typu się odwołujesz. Jest to używane w całym F #.
Mongus Pong,

1
Użyłbym F # dla łatwych funkcji asynchronicznych. Jednak TPL sprawiła, że ​​jest to dość łatwe w C #. Jeśli jednak miałbyś osadzić język skryptów, zdecydowanie użyłbym F # do jego analizy.
Jetti,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.