¿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?


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.


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.


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.