Você deve usar C # e F # juntos

16

Eu sei que você pode usar C # e F # juntos no mesmo projeto, no entanto, não tenho certeza se é uma boa idéia fazê-lo.

Parece-me que misturar dois estilos de codificação muito diferentes (funcional versus OOP) poderia causar falta de coesão no design. Isso está correto?

Tom Squires
fonte
1
Como você pode usá-los no mesmo projeto? Você quer dizer a mesma solução?
22712 Bryan Boettcher
2
Não a definição Microsoft do projeto, mas a definição mais geral
Tom Squires
Uma desvantagem óbvia é que, se pelo menos parte do trabalho no projeto exigir que o desenvolvedor interaja com as duas seções em C # e em F # (mesmo apenas para lê-las), essas partes exigirão um desenvolvedor com conhecimento em ambos os idiomas e existem menos deles do que aqueles com conhecimento em apenas um idioma e, portanto, são mais difíceis de encontrar, potencialmente mais caros e há menos variedade deles (neste caso específico, embora seja provável que a maioria dos desenvolvedores de F # também tenha pelo menos alguma familiaridade com C #) .
Gbr #
absolutamente. por exemplo, introduzir gradualmente o F # em uma solução C # herdada é um cenário válido.
KolA 21/08/19

Respostas:

23

Não há nada de errado em misturar idiomas em um produto, desde que você os use adequadamente e eles "funcionem bem" juntos.

Se existe uma parte do seu projeto que seria melhor codificada usando uma linguagem funcional, faz sentido codificá-lo em F #. Da mesma forma para C #.

O que seria inútil (na melhor das hipóteses) seria misturar linguagens por causa disso.

ChrisF
fonte
0

Parece-me que misturar dois estilos de codificação muito diferentes (funcional versus OO) poderia causar falta de coesão no design. Isso está correto?

Eu não acho que você terá uma "falta de coesão". Cada idioma tem pontos fortes e fracos. Combiná-los em um tempo de execução no idioma comum permite que você se aproxime do melhor dos dois mundos. Com C # e F #, você só quer ter certeza de usar a interseção dos dois idiomas na interface entre os dois na sua solução.

Jon Harrop
fonte
0

Sim, eu concordo com ChrisF . Atualmente, o C # já incorpora princípios de F #, como tipos anônimos:

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

Dito isto, eu pessoalmente acho que é um passo atrás na legibilidade do código, embora seja muito conveniente.

PaulDecember
fonte
2
Tipos anônimos não são realmente um princípio de F #. Pode ser que você queira se referir à inferência de tipo (o que a palavra-chave var faz em C #), na qual o compilador adivinha a que tipo você está se referindo. Isso é usado em todo o F #.
Mongus Pong 8/11
1
Eu usaria o F # para os recursos fáceis de async. No entanto, o TPL facilitou bastante isso em C #. Se você incorporasse uma linguagem para script, eu definitivamente usaria o F # para analisar isso.
7119 Jetti