2009-04-20 7 views
11

Stavo leggendo la seguente domanda - How safe would it be to use functional-java to add closures to a Java production project? e stavo pensando di usare lo Functional Java project anche nel mio attuale progetto. Mi chiedevo quali sono le esperienze degli utenti di Stack Overflow nell'usare il progetto Functional Java? In particolare, sono curioso di alcune di queste specifiche:Quali sono le tue esperienze usando il progetto java funzionale?

  • Ha aumentato la qualità del codice o la chiarezza?
  • Migliora la produttività?
  • Riduci i potenziali punti di errore?
  • Prestazioni di impatto?

risposta

9

Sono stato in una squadra che utilizza la libreria FJ e conosco altri. In una squadra è stato usato come sostituto di una biblioteca cresciuta in casa meno rifinita, in un'altra ha sostituito Google Collections. Conosco anche persone che copiano il codice sorgente da FJ per implementare la propria implementazione.

A mio parere, se è necessario utilizzare Java, è necessario utilizzare qualcosa come Java funzionale per semplificarti la vita.

Ha aumentato la qualità del codice o la chiarezza?

Il codice scritto in uno stile funzionale è più conciso, quindi più chiaro. La libreria viene fornita con e incoraggia l'uso di strutture di dati immutabili che migliorano la qualità. La libreria incoraggia anche la composizione sull'ereditarietà, migliorando la riusabilità del codice.

Migliora la produttività?

Definitivamente. Gli sviluppatori con strumenti più potenti sono più produttivi. Nella mia esperienza, gli sviluppatori sentono che le funzioni di prima classe rendono la programmazione più semplice e divertente. I bravi programmatori sono programmatori produttivi.

Ridurre i potenziali punti di guasto?

Uno stile di programmazione più funzionale scoraggia lo stato mutabile, eliminando una vasta classe di errori. Inoltre, le astrazioni più potenti portano a una minore ripetizione, che riduce il numero di luoghi in cui qualcosa non va.

Prestazioni di impatto?

Non c'è motivo di credere che le prestazioni siano influenzate in un modo o nell'altro. Le strutture dati fornite sono progettate per facilità d'uso ed espressività piuttosto che per le prestazioni, ma sono scritte in modo ottimale per quello che sono. Come per qualsiasi altra cosa, il modo in cui guidi è più importante di quello che stai guidando. Ad esempio, fj.data.List è un elenco collegato, quindi ha O (n) accesso casuale e concatenazione, quindi lo si evita per tali scopi. fj.data.Stream ha una concatenazione O (1), per confronto.

Problemi correlati