Рубрики
Без рубрики

Как мне овладеть функциональным программированием на Java

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

Как разработчик Java, я всегда ищу способы улучшить свои навыки программирования. Я слышал о функциональном программировании (FP) еще в студенческие годы. Тогда FP был не очень популярен, и большинство разработчиков считали код, написанный с использованием FP, медленным.

Время изменилось, и сегодня FP очень популярен. Некоторые разработчики рассматривают это как будущее того, как разработчики пишут код.

FP – это самая полезная концепция, которую я усвоил за последние несколько лет. Это помогло мне стать лучшим разработчиком. Я начал писать более чистый код с меньшим количеством ошибок.

Вот непосредственные преимущества, которые я получил от FP:

  • Я оттачиваю свои навыки, связанные с использованием потоков Java. Мне намного легче работать с потоками, когда я понимаю концепции FP.
  • Мои функции, которые следуют концепциям FP, легко понять и поддерживать. Нет никакого риска использовать их в параллельной среде. Возможность повторного использования этих функций намного выше.
  • Если вы не являетесь поклонником утверждений “если” и “за”, то вам понравится FP. Это может помочь вам написать более понятный код, который не содержит этих инструкций. Я могу сделать больше с меньшим количеством строк кода.
  • FP – это декларативная парадигма. С помощью FP вы описываете то, что хотите, а не то, как это получить. Это означает, что код более удобочитаем, многоразов и его проще поддерживать.

Так, как я начал с функционального программирования?

Мы можем найти массу материалов в Интернете, связанных с FP. Обычно мне нравится смотреть видеоматериалы, когда я хочу узнать о новом предмете.

Я присутствовал на онлайн-презентации, проведенной Венкатом Субраманиамом. Это была отличная и вдохновляющая презентация. Хорошей новостью является то, что вы можете посмотреть его по следующей ссылке: Функциональное программирование на Java 8 .

После этой презентации у меня появился интерес к FP, поэтому я решил больше узнать о FP. Я смотрел курс Pluralsight Функциональное программирование: Общая картина . Этот курс помог мне понять общую картину FP и почему это важно.

Следующим естественным шагом было проверить, существует ли курс, тема которого связана с реализацией концепций FP в Java. Я нашел курс Применение методов функционального программирования на Java . Это отличный курс. Это помогло мне изучить, понять и применить новые концепции FP в Java.

Посмотрев эти курсы, я захотел узнать больше о Монадах. Они очень важны в FP. Следующие два видео помогли мне понять Монады: Брайан Бекман: Не бойтесь Монады и Что, черт возьми, такое Монада? .

Учитесь у Хаскелла

Я начал изучать Хаскелл. В конце презентации Венката Субраманиама я спросил его, поможет ли мне изучение Haskell лучше понять концепции FP. Ответ был примерно таким: “Не только Хаскелл помог мне понять FP, Хаскелл НАУЧИЛ МЕНЯ писать хороший код”. Некоторые разработчики говорят, что изучение Haskell похоже на повторное изучение программирования с нуля. Я многому научился у Хаскелла, и начать с этого было легко и весело. Научу Тебя Хаскеллу для Великого Блага! это отличный учебник для начала работы с Haskell.

Изучите какой-нибудь язык FP

Если вам не нравится Хаскелл, не волнуйтесь, вы можете выучить другой язык FP. Вы можете проверить Kotlin, Scala, F#, Clojure, Elixir, Erlang…

Если вы хотите придерживаться JVM, вы можете изучить Kotlin, Scala или Clojure. Kotlin и Scala поддерживают функциональные парадигмы и парадигмы ООП, и разработчики Java могут легко начать работу с ними. Kotlin – это новый язык, Spring framework поддерживает его, и некоторые разработчики Java начали переходить на него. По этим причинам я предлагаю попробовать Котлин.

Clojure – это современный вариант Lisp, который работает на JVM. Полезно знать, что Lisp является старейшим языком FP. Кроме того, дядя Боб использует Clojure.

Мой опыт работы с функциональным программированием

Чтобы ознакомиться с FP, я изучил и применил на практике концепции FP. Наиболее важными понятиями, которые я усвоил, являются:

  • Неизменяемость – В моей кодовой базе есть как можно больше неизменяемых объектов. Это приводит к меньшему количеству мест, где я могу изменить состояние программы. И это приводит к меньшему количеству ошибок.
  • Ссылочная прозрачность – Я пишу как можно больше чистых функций. Эти функции подобны математическим функциям. Для одного и того же входного сигнала они всегда имеют один и тот же выходной сигнал.
  • Чистые и нечистые функции – до FP я не знал об этой концепции. Теперь я отделяю чистые функции от нечистых. Это позволило мне легче протестировать код и улучшило возможность повторного использования моего кода.
  • Композиция функций – способствует лучшей читабельности кода и облегчает написание кода путем создания функций.
  • Функции Карри – блестящая концепция, но использовать ее в Java, как и в других языках FP, неестественно. Сейчас я ими не пользуюсь.
  • Ленивая оценка – оценивайте значения, когда они необходимы. Лямбды – это способ выполнения ленивой оценки на Java.
  • Функции более высокого порядка – получают другие функции в качестве параметров в существующих функциях. Эти функции обычно являются функциями полезности.
  • Сопоставлять, фильтровать, уменьшать шаблон – Java Stream API реализует этот шаблон.
  • Монады – помогли мне понять, как безопасно обрабатывать нечистые функции.
  • Дополнительный класс – FP предоставляет эффективное решение для работы с объектами, допускающими обнуление. Я всегда возвращаю необязательный объект вместо null в методе, который может возвращать null.
  • Железнодорожное программирование – помогло мне понять, как работает потоковый API и дополнительный класс.

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

Я планирую продолжить изучение FP и Java. Я буду продолжать писать посты на эту тему. Для получения обновлений вы можете следить за мной на Twitter или LinkedIn .

Оригинал: “https://dev.to/mare_milenkovic/how-do-i-become-proficient-with-functional-programming-in-java-52pa”