Конференция завершена. Ждем вас на TechLead Conf в следующий раз!

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

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

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

Мнение Программного комитета о докладе

Автор — опытный преподаватель, который обучает программистов распутывать сложный код, применяя функциональные шаблоны.

Тезисы

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

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

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

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

Evrone

Компания Evrone — лидер на рынке аутсорса сложных решений для бизнеса (вебдев, финтех, e-commerce и др.).

Видео

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

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