Тяжёлый функциональный рефакторинг: как сделать код лучше и не сойти с ума

Воркшоп/мастер-классы

Доклад принят в программу конференции

Тезисы

Общим местом современной разработки RoR является философско-практическая проблема "куда девать бизнес-логику во фреймворке, который "заточен под другое". Лёгкость прототипирования и развитый ООП-инструментарий RoR первоначально не предполагает "обмазываний абстракциями" и "академической нудятины". Вместе с тем, как только сложность проекта превышает пресловутый "бложик за 15 минут", в проекте начинает накапливаться технический долг в виде надобности рефакторинга образовавшейся в результате "гибкой инкрементной разработки" лапши из спутанного (entangled) ОО-кода, god-objects на всех уровнях MVC, бешеных репортов CodeClimate и прочих "благ цивилизации".

Во всех современных языках существует достаточно зрелый ФП-инструментарий, а коммюнити накопило достаточно знаний для его применения. Мы стали более лучше самообразовываться, продвигаться в CS и теории языков. Проблемы DDD требуют уже не столько наработки, сколько деления реальным опытом ФП-архитектуры в DDD. У компании Evrone такой опыт есть.

Предлагаю мастер-класс по ФП-рефакторингу спутанного MVC-кода с применением инструментария Dry-rb, встроенных ФП-примитивов Ruby и функциональных паттернов монадного вычисления, каррирования, инъекции анонимных функций и т.п.

Тимлид и ментор в компании Evrone, преподаватель МГТУ им. Баумана.

Видео

Подготовительное задание
Теория ФП: анонимные функции, каррирование, монады; документация по ФП-примитивам в Ruby (https://womanonrails.com/functional-programming-ruby), монадные паттерны Result, Maybe, Try (https://dry-rb.org/gems/dry-monads/1.3/)

Все предварительные знания желательны, но не обязательны. Автор препод, сам объяснит.