2009-04-20 4 views
11

Ich habe die folgende Frage gelesen - How safe would it be to use functional-java to add closures to a Java production project? und ich hatte darüber nachgedacht, die Functional Java project auch in meinem aktuellen Projekt zu verwenden. Ich habe mich gefragt, was Stack Overflow-Benutzer mit der Verwendung des Functional Java-Projekts erleben? Insbesondere bin ich neugierig auf einige dieser Besonderheiten:Welche Erfahrungen haben Sie mit dem funktionalen Java-Projekt gemacht?

  • Hat es Codequalität oder Klarheit erhöht?
  • Verbesserung der Produktivität?
  • Potenzielle Fehlerquellen reduzieren?
  • Schlagleistung?

Antwort

9

Ich war in einem Team, das die FJ-Bibliothek verwendet, und ich kenne andere. In einem Team wurde es als Ersatz für eine selbstgebaute Bibliothek verwendet, die weniger poliert war, auf der anderen Seite ersetzte es Google Collections. Ich kenne auch einige Leute, die den Quellcode von FJ kopiert haben, um ihre eigene Implementierung zu erstellen.

Meiner Meinung nach, wenn Sie Java verwenden müssen, sollten Sie etwas wie Functional Java verwenden, um Ihr Leben einfacher zu machen.

Wurde die Codequalität oder -klarheit erhöht?

Code in einem funktionalen Stil geschrieben ist prägnanter, daher klarer. Die Bibliothek enthält und ermutigt die Verwendung von unveränderlichen Datenstrukturen, was die Qualität verbessert. Die Bibliothek fördert außerdem die Komposition über Vererbung, was die Wiederverwendbarkeit Ihres Codes verbessert.

Verbesserung der Produktivität?

Definitiv. Entwickler mit leistungsfähigeren Tools sind produktiver. Meiner Erfahrung nach haben Entwickler das Gefühl, dass erstklassige Funktionen das Programmieren einfacher und angenehmer machen. Glückliche Programmierer sind produktive Programmierer.

Potenzielle Fehlerquellen reduzieren?

Eine mehr funktionale Art der Programmierung entmutigt veränderlichen Zustand, der eine große Klasse von Fehlern beseitigt. Außerdem führen stärkere Abstraktionen zu weniger Wiederholungen, wodurch die Anzahl der Stellen verringert wird, an denen etwas nicht stimmt.

Schlagfestigkeit?

Es besteht kein Grund zu der Annahme, dass die Leistung auf die eine oder andere Weise beeinträchtigt wird. Die bereitgestellten Datenstrukturen sind eher auf Benutzerfreundlichkeit und Ausdruckskraft als auf Leistung ausgelegt, aber sie sind optimal für das geschrieben, was sie sind. Wie bei allem anderen ist das Fahren wichtiger als das, was Sie fahren. Zum Beispiel ist fj.data.List eine verkettete Liste, also hat es O (n) wahlfreien Zugriff und Verkettung, deshalb vermeiden Sie es für diese Zwecke. fj.data.Stream hat O (1) Verkettung, durch Vergleich.

Verwandte Themen