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?

Tom Squires
źródło
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.

ChrisF
źródło
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.

Jon Harrop
źródło
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.

PaulDecember
źródło
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,