您使用functional java项目的经验是什么?

您使用functional java项目的经验是什么?,java,functional-programming,functional-java,Java,Functional Programming,Functional Java,我正在阅读下面的问题——我一直在考虑在我当前的项目中也使用。我想知道Stack Overflow的用户在使用Functional Java项目时有什么体验?特别是,我对其中一些细节感到好奇: 它是否提高了代码质量或清晰度 提高生产力 减少潜在的故障点 影响性能 我加入了一个使用FJ库的团队,我知道其他人。在一个团队中,它被用来取代一个不太精致的本土图书馆,在另一个团队中,它取代了谷歌收藏。我还认识一些人,他们模仿FJ的源代码来推出自己的实现 在我看来,如果您必须使用Java,那么您应该使用类似

我正在阅读下面的问题——我一直在考虑在我当前的项目中也使用。我想知道Stack Overflow的用户在使用Functional Java项目时有什么体验?特别是,我对其中一些细节感到好奇:

  • 它是否提高了代码质量或清晰度
  • 提高生产力
  • 减少潜在的故障点
  • 影响性能

我加入了一个使用FJ库的团队,我知道其他人。在一个团队中,它被用来取代一个不太精致的本土图书馆,在另一个团队中,它取代了谷歌收藏。我还认识一些人,他们模仿FJ的源代码来推出自己的实现

在我看来,如果您必须使用Java,那么您应该使用类似函数式Java的东西来简化您的生活

它是否提高了代码质量或清晰度

以函数式风格编写的代码更简洁,因此更清晰。该库附带并鼓励使用不变的数据结构,从而提高了质量。该库还鼓励组合而不是继承,这提高了代码的可重用性

提高生产力

当然。拥有更强大工具的开发人员的工作效率更高。根据我的经验,开发人员觉得一流的函数使编程更容易、更有趣。快乐的程序员是高效的程序员

减少潜在的故障点

更具功能性的编程风格不鼓励可变状态,从而消除了一大类错误。此外,更强大的抽象会减少重复,从而减少出错的地方

影响性能

没有理由相信绩效会受到这样或那样的影响。提供的数据结构是为易于使用和表达而设计的,而不是为性能而设计的,但它们的编写方式是最佳的。与其他任何事情一样,你如何驾驶比你在驾驶什么更重要。例如,fj.data.List是一个链表,因此它具有O(n)随机访问和连接,因此您可以避免使用它。相比之下,fj.data.Stream有O(1)个串联