In C #, la programmazione funzionale è uno strumento appropriato quando devi navigare tra le collezioni. In questi casi, la programmazione funzionale rende il codice molto più breve e aiuta a concentrarsi sul problema anziché sulla sua implementazione , riducendo il rischio di errori.
Difficilmente puoi essere responsabile della riduzione della base di codici e del margine per gli errori utilizzando uno strumento appropriato.
Il problema che hai con i tuoi colleghi, ce l'ho nella società in cui lavoro attualmente. La maggior parte dei programmatori non conosce molto bene né C #, né programmazione in generale, il che mi rende una persona non molto popolare, dato che i miei colleghi hanno difficoltà a comprendere il codice che utilizza la programmazione parallela, i paradigmi funzionali, i contratti di codice e altre funzionalità di .NET Framework.
Una delle regole che ogni sviluppatore dovrebbe seguire è che il loro codice dovrebbe essere comprensibile in un determinato contesto . Ciò è in conflitto con il fatto che non si dovrebbe essere costretti a ridurre la qualità del codice solo perché lavora con persone non qualificate.
Ci sono due soluzioni:
-
Insegna ai tuoi colleghi la programmazione funzionale e altre cose che conosci e loro no, cercando di aumentare il loro livello al tuo. Questo è ciò che ho scelto nel mio caso e ciò che suggerirei a chiunque.
Vantaggi: la qualità della base di codici aumenterà e potresti apprezzare meglio lavorare con colleghi più esperti.
Contro: molti programmatori non vogliono imparare cose. Lavorano per soldi e non si preoccupano del loro lavoro. Cercare di insegnare loro qualsiasi cosa sarebbe un compito estremamente difficile e si dovrebbe essere pronti a ricevere una strong resistenza.
-
Inizia a scrivere un codice schifoso scritto per principianti. Dato che questo può essere disastroso per la motivazione, questa soluzione dovrebbe essere presa solo quando si lavora con persone incapaci e / o non disposte a imparare e in circostanze in cui è possibile smettere presto.
Professionisti: questo può migliorare le relazioni con i colleghi se non vogliono imparare cose e non vogliono sforzarsi di leggere il tuo codice.
Contro: questo diminuirà la qualità del codice base. Lavorare su progetti mal fatti che inevitabilmente fallire non è molto motivante.
Infine, i programmatori dovrebbero conoscere la programmazione funzionale? Dipende. Sarebbe obbligatorio per qualsiasi persona che lavora quotidianamente con C # per sapere quali sono i tipi anonimi e le espressioni lambda e come usarli in C #; d'altro canto, non direi che la stessa persona che non sa cosa sia una monade dovrebbe essere trattata come incompetente.
La differenza è che i tipi anonimi e le espressioni lambda sono la parte inerente di C # oggigiorno, mentre il termine monad non esiste nel mondo C #.
D'altra parte, mi aspetto che uno sviluppatore sia familiare ai concetti di programmazione funzionale come le monadi, anche se questo sviluppatore non li ha mai usati. Questo perché gli sviluppatori non solo si aspettano di scrivere codice in una determinata lingua, ma hanno abbastanza cultura generale e curiosità oltre gli strumenti che usano quotidianamente.