Где лучше применять функциональное программирование в JavaScript?
ФП - где не требуется хранение состояния, а нужно лишь значение результата. (иначе ООП).
Привет.
В данный момент я слегка упарываюсь по ФП. И на самом деле это и хорошо и плохо одновременно.
Хорошо потому, что заставляю мозг думать немного иначе (привет рекурсия), плохо потому, что не все задачи поддаются решению в ФП стиле. К тому же рекурсия на больших данных переполняет стек, а хвостовую рекурсию пока реализовали только в сафари (прощай рекурсия). Однако функции, которые априори будут работать с маленьким размером данных я, иногда позволяю себе написать в рекурсивном виде.
К слову про RxJs. Я "̶н̶е̶ ̶ч̶и̶т̶а̶л̶,̶ ̶н̶о̶ ̶о̶с̶у̶ж̶д̶а̶ю̶"̶ , не изучал его, но слышал, что в библиотеке всё построено на ФП, и это одна из моих целей к изучению.
Как с ФП так и с ООП можно решать определённые типы задач. И порой код выглядит очень усложнённым, если  мы пытаемся применить ФП для решения ООП задачи и наоборот.
Отчасти нам повезло, что js позволяет делать и так, и эдак, и не заключает нас в рамки использования какой-то одной концепции.Забавная статья про ФП и ООПОчень годный цикл из трёх докладов на тему ООП, и почему оно нам нужно. Здесь Антон рассказывает о том, что такое доменная сложность, и этот доклад очень повлиял на моё восприятие ФП и ООП подходов. Теперь, если нужно принять решение, какой подход использовать, я спрашиваю себя, с какой доменной сложностью я столкнулся.
Согласитесь, что до возникновения определённых требований(пока не представляю каких), нет смысла реализовывать функциональность сложения чисел с использованием ООП.Я даже не знаю как это правильно реализовать на ООП...class Sum {
    static sum(a, b) {
        return a + b;
    }
}

class Sum {
    constructor(a, b) {
        this.a = a;
        this.b = b;
    }
    
    sum() {
        return this.a + this.b;
    }
}При том, что в функциональном стиле это arrow function в одну строкуconst sum = (a, b) => a + b;А в haskell это вообще великолепно:sum :: Int -> Int -> Int
sum a b = a + b
Есть, кстати, великолепный учебник по Haskell.
В качестве эпиолга могу сказать лишь то, что скажет любой нормальный программист: пишите понятный код. Не важно в каком стиле он написан, важно чтобы он:решал поставленную задачубыл легко поддерживаемым