私はFJライブラリを使用するチームに所属しており、他の人のことも知っています。あるチームでは、あまり洗練されていない自家製のライブラリの代わりとして使用され、別のチームでは、Googleコレクションの代わりに使用されました。また、FJからソースコードをコピーして独自の実装をロールする人もいます。
私の意見では、Javaを使用する必要がある場合は、Functional Javaのようなものを使用して、作業を楽にする必要があります。
コードの品質や明快さは向上しましたか?
機能的なスタイルで記述されたコードはより簡潔であるため、より明確になります。ライブラリには不変のデータ構造が付属しており、その使用を奨励しているため、品質が向上します。ライブラリはまた、継承よりも構成を促進し、コードの再利用性を向上させます。
生産性を向上させますか?
間違いなく。より強力なツールを使用する開発者は、より生産的です。私の経験では、開発者はファーストクラスの関数がプログラミングをより簡単で楽しいものにすると感じています。幸せなプログラマーは生産的なプログラマーです。
潜在的な障害点を減らしますか?
より機能的なプログラミングスタイルは、可変状態を思いとどまらせ、大きなクラスのバグを排除します。また、より強力な抽象化により繰り返しが少なくなり、問題が発生する場所の数が減ります。
パフォーマンスに影響を与えますか?
パフォーマンスが何らかの形で影響を受けると信じる理由はありません。提供されているデータ構造は、パフォーマンスではなく使いやすさと表現力を重視して設計されていますが、それらが何であるかについて最適に記述されています。他のすべての場合と同様に、運転する方法は、運転しているものよりも重要です。たとえば、fj.data.Listはリンクリストであるため、O(n)のランダムアクセスと連結があります。したがって、これらの目的では避けてください。比較すると、fj.data.StreamにはO(1)連結があります。