Dovresti usare C # e F # insieme


16

So che puoi usare C # e F # insieme nello stesso progetto, tuttavia non sono sicuro che sia una buona idea farlo.

Mi sembra che mescolare due stili di codifica molto diversi (funzionale vs OOP) potrebbe causare una mancanza di coesione nel design. È corretto?


1
Come puoi usarli nello stesso progetto? Intendi la stessa soluzione?
Bryan Boettcher,

2
Non la definizione Microsoft del progetto ma la definizione più generale
Tom Squires,

Un ovvio svantaggio è che se almeno una parte del lavoro sul progetto richiede che lo sviluppatore interagisca con entrambe le sezioni in C # e in F # (anche solo per leggerle), quelle parti richiedono uno sviluppatore esperto in entrambe le lingue, e ci sono meno di quelli che conoscono in una sola lingua, e quindi sono più difficili da trovare, potenzialmente più costosi e ce ne sono meno varietà (in questo caso specifico, anche se è probabile che la maggior parte degli sviluppatori di F # abbia almeno una certa familiarità con C #) .
dal

assolutamente. ad esempio l'introduzione graduale di F # in una soluzione C # legacy è uno scenario valido.
KolA,

Risposte:


23

Non c'è niente di sbagliato nel mescolare le lingue in un prodotto purché le usi in modo appropriato e "suonino bene" insieme.

Se c'è una parte del tuo progetto che sarebbe meglio codificato usando un linguaggio funzionale, allora ha senso codificarlo in F #. Allo stesso modo per C #.

Ciò che sarebbe inutile (nella migliore delle ipotesi) sarebbe mescolare le lingue per il gusto di farlo.


0

Mi sembra che mescolare due stili di codifica molto diversi (funzionale vs OO) potrebbe causare una mancanza di coesione nel design. È corretto?

Non credo che otterrai una "mancanza di coesione". Ogni lingua ha punti di forza e di debolezza. Combinandoli in un runtime di linguaggio comune puoi avvicinarti al meglio di entrambi i mondi. Con C # e F #, devi solo assicurarti di usare l'intersezione delle due lingue nell'interfaccia tra le due nella tua soluzione.


0

Sì, sono d'accordo con ChrisF . Anche C # attualmente incorpora già principi F #, come i tipi anonimi:

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

Detto questo, personalmente ritengo sia un passo indietro nella leggibilità del codice, sebbene sia molto conveniente.


2
I tipi anonimi non sono in realtà un principio F #. Forse intendi fare riferimento all'inferenza del tipo (cosa fa la parola chiave var in C #) per cui il compilatore indovina a quale tipo ti riferisci. Questo è usato in F #.
Mongus Pong,

1
Vorrei usare F # per le semplici funzionalità asincrone. Tuttavia, il TPL ha reso abbastanza facile farlo in C # da solo. Se dovessi incorporare un linguaggio per gli script, userei sicuramente F # per analizzarlo.
Jetti,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.