¿Debería usar C # y F # juntos?

16

Sé que pueden usar C # y F # juntos en el mismo proyecto, sin embargo, no estoy seguro de si es una buena idea hacerlo.

Me parece que mezclar dos estilos de codificación muy diferentes (funcional frente a OOP) podría causar una falta de cohesión en el diseño. ¿Es esto correcto?

Tom Squires
fuente
1
¿Cómo puedes usarlos en el mismo proyecto? ¿Te refieres a la misma solución?
Bryan Boettcher
2
No es la definición de proyecto de Microsoft, sino la definición más general
Tom Squires
Un inconveniente obvio es que si al menos parte del trabajo en el proyecto requiere que el desarrollador interactúe con ambas secciones en C # y en F # (incluso solo para leerlas), esas partes requerirán un desarrollador con conocimientos en ambos idiomas, y hay menos de ellos que los que tienen conocimiento en un solo idioma, y ​​por lo tanto son más difíciles de encontrar, potencialmente más caros y hay menos variedad de ellos (en este caso específico, aunque es probable que la mayoría de los desarrolladores de F # tengan al menos cierta familiaridad con C # también) .
gbr 01 de
absolutamente. por ejemplo, introducir gradualmente F # en una solución C # heredada es un escenario válido.
KolA

Respuestas:

23

No hay nada de malo en mezclar idiomas en un producto siempre y cuando los uses apropiadamente y "jueguen bien" juntos.

Si hay una parte de su proyecto que se codificará mejor utilizando un lenguaje funcional, entonces tiene sentido codificarlo en F #. Del mismo modo para C #.

Lo que no tendría sentido (en el mejor de los casos) sería mezclar idiomas por el simple hecho de hacerlo.

ChrisF
fuente
0

Me parece que mezclar dos estilos de codificación muy diferentes (funcional frente a OO) podría causar una falta de cohesión en el diseño. ¿Es eso correcto?

No creo que tenga una "falta de cohesión". Cada idioma tiene fortalezas y debilidades. Combinarlos en un tiempo de ejecución de lenguaje común le permite acercarse a lo mejor de ambos mundos. Con C # y F #, solo quiere asegurarse de utilizar la intersección de los dos idiomas en la interfaz entre los dos en su solución.

Jon Harrop
fuente
0

Sí, estoy de acuerdo con ChrisF . Además, C # actualmente ya incorpora principios F #, como los tipos anónimos:

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

Dicho esto, personalmente creo que es un paso atrás en la legibilidad del código, aunque es muy conveniente.

Pauldiciembre
fuente
2
Los tipos anónimos no son realmente un principio F #. Puede ser que se refiera a la inferencia de tipos (lo que hace la palabra clave var en C #) mediante la cual el compilador adivina a qué tipo se refiere. Esto se usa en F #.
Mongus Pong el
1
Usaría F # para las capacidades asíncronas fáciles. Sin embargo, el TPL ha hecho que sea bastante fácil hacerlo en C # por sí mismo. Sin embargo, si incrustara un lenguaje para scripting, definitivamente usaría F # para analizarlo.
Jetti