Книга «Грокаем функциональное программирование»

image Привет, Хаброжители!

Вам кажется, что функциональное программирование — это нечто сложное, доступное только гуру программирования? Эта книга развенчает миф об элитарности и позволит любому программисту с легкостью разобраться в хитросплетениях кода.

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

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

Кому адресована книга

Книга адресована читателям, имеющим хотя бы небольшой опыт разработки коммер-
ческого программного обеспечения на любом из основных объектно-ориентированных
языков программирования, таких как Java. Учебные примеры написаны на языке Scala,
но, вообще говоря, эта книга — не о Scala. Никаких предварительных знаний этого языка
или функционального программирования не требуется.


Нечистые функции и изменяемые значения наносят ответный удар


image


Использование Java Streams для сортировки списка


image


Сигнатуры функций должны рассказывать всю правду


image


Изменение требований


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

Версия 4: изменение алгоритма ранжирования

Посмотрим, как поведет себя функция rankedWords в новых обстоятельствах. Вот первоначальные и дополнительные требования.

Первоначальные требования
1. Оценка слова вычисляется как сумма баллов, по одному за каждую букву, отличную от буквы 'a'.
2. Для заданного списка слов нужно вернуть отсортированный список, начинающийся со слова с наибольшей оценкой.


Дополнительные требования
1. Если в слове есть буква 'c', то к его окончательной оценке следует прибавить пять баллов.
2. Код должен поддерживать старый способ вычисления оценки (без начисления дополнительных баллов за букву 'c').


image


Мы можем передавать код в аргументах!


image


Использование значений Function в Java


image


Использование синтаксиса Function для устранения повторяющегося кода


image


Об авторе

Михал Плахта — опытный инженер-программист и активный участник сообщества функционального программирования. Регулярно выступает на конференциях, проводит семинары, организует встречи и ведет блоги о создании поддерживаемого программного обеспечения.


Более подробно с книгой можно ознакомиться на сайте издательства:
» Оглавление
» Отрывок

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 25% по купону — Программирование

© Habrahabr.ru