My Authors
Read all threads
Тред про функциональное программирование (ФП) в мобильной разработке: что такое ФП, зачем оно надо, зачем в мобильной разработке, как использовать.
#ios #android #functionalprogramming
НАЧАЛО
Что такое ФП в один твит: это набор ограничений/правил (чистые функции, неизменяемые значения) и набор техник (функторы, монады, рекурсия) для работы в этих ограничениях
Зачем мы ставим себе (и нашему софту) эти ограничения? Чтобы иметь возможность хоть немного понимать что происходит в наших программах. Чистую функцию понять очень легко - она зависит только от переданных параметров и внешний мир на нее не влияет.
Если мы сможем большую часть нашей программы оградить от изменений внешнего мира, то сможем с большей уверенностью утверждать о том, что программа работает правильно. Мы сможем *примерно* представить как она работает. Без запуска/тестов/черной магии.
В итоге, ФП = ограничения + инструменты = больше понимания = меньше багов.
Но разработка софта это не математика, поэтому мы не используем чистое ФП, мы смешиваем подходы. Это единственный способ соблюсти баланс.
Что там про мобильную разработку? В нашей сфере мы ОЧЕНЬ много взаимодействуем с пользователем и внешним миром. Кнопки, поля, состояния экранов, навигация между экранами… Всё зависит от пользователя и от состояния, которое постоянно меняется.
Всё вышеперечисленное делает мобильный софт очень сложным, хотя многие и говорят, что мы лишь красим кнопки. Но попробуйте покрасить 100 кнопок, каждая из которых зависит от 10 переменных состояния, погоды, фазы луны и вспышек на солнце.
Мы не можем убрать сайд-эффекты из нашего софта, т.к. это вообще единственное, что важно. Поэтому наша задача собрать их всех в одном месте, придумать единственный способ обработки сайд-эффектов и строго следовать поставленным правилам. Это значит:
Чтение/запись в базу - в одном месте. Поход в интернет - в одном месте. То есть у вас есть лишь *одна* функция, умеющая писать в базу. И она ТОЛЬКО пишет. На вход принимает что(данные) и куда(таблицу) надо писать. Создаются эти параметры в другом месте
Если у вас есть функция, которая принимает данные от пользователя и что-то с ними делает - это должны быть 2 разных функции. Чтения из поля - одна функция, валидация(пр.) - другая.
Следуя даже этому простому правилу здравого смысла, вы в разы улучшите ваш код. Но без фанатизма, везде нужно видеть границы.
О конкретных инструментах и подходах (Rx, Declarative UI, Either monad, etc) - в следующем треде, тут получилось многовато информации для переваривания.

#ios #android #functionalprogramming
КОНЕЦ
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Tim Pλotnikov

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!