Какой у вас опыт использования функционального Java-проекта? - PullRequest
11 голосов
/ 20 апреля 2009

Я читал следующий вопрос - Насколько безопасно было бы использовать функциональный java для добавления замыканий в производственный проект Java? , и я думал об использовании Функциональный Java-проект также и в моем текущем проекте. Мне было интересно, как пользователи Stack Overflow используют проект Functional Java? В частности, мне любопытно узнать о некоторых из этих особенностей:

  • Повысило ли это качество или четкость кода?
  • Повысить производительность?
  • Уменьшить потенциальные точки отказа?
  • Влияние производительности?

1 Ответ

10 голосов
/ 20 апреля 2009

Я был в команде, которая использует библиотеку FJ, и я знаю других. В одной команде он использовался в качестве замены домашней библиотеки, которая была менее отполированной, в другой он заменял Google Collections. Я также знаю некоторых людей, которые копируют исходный код из FJ для развертывания собственной реализации.

По моему мнению, если вы должны использовать Java, вы должны использовать что-то вроде функциональной Java, чтобы сделать вашу жизнь проще.

Повысило ли это качество или четкость кода?

Код, написанный в функциональном стиле, более лаконичен и, следовательно, более понятен. Библиотека поставляется и поощряет использование неизменяемых структур данных, что повышает качество. Библиотека также поддерживает композицию, а не наследование, что улучшает возможность повторного использования вашего кода.

Повысить производительность?

Определенно. Разработчики с более мощными инструментами более продуктивны. По моему опыту разработчики считают, что первоклассные функции делают программирование проще и приятнее. Счастливые программисты - продуктивные программисты.

Уменьшить потенциальные точки отказа?

Более функциональный стиль программирования препятствует изменчивому состоянию, что устраняет большой класс ошибок. Кроме того, более мощные абстракции приводят к меньшему количеству повторений, что уменьшает количество мест, где что-то не так.

Влияние производительности?

Нет никаких оснований полагать, что на производительность будет влиять так или иначе. Предоставленные структуры данных предназначены для простоты использования и выразительности, а не производительности, но они написаны оптимально для того, что они есть. Как и во всем остальном, то, как вы ведете машину, важнее, чем то, что вы ведете. Например, fj.data.List является связанным списком, поэтому он имеет O (n) произвольный доступ и конкатенацию, поэтому вы избегаете его для этих целей. Для сравнения, fj.data.Stream имеет конкатенацию O (1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...