Это причина, по которой мы не позволяем миллениалам брать на себя контроль над проектом, они этого не понимают и снова и снова принимают неверные решения. Возможно, мы пропустим все это поколение. Интересно, умеют ли миллениалы подавать кофе? (шутить).

Функциональное программирование - это ужасно, ПЛОХО, ОНО УМЕРЛО 3 ДЕСЯТИЛЕТИЯ НАЗАД. А теперь его возродили и заклеили на JavaScript.

ООП нацелено на повторное использование, ремонтопригодность, масштабируемость, SRP, KISS и другие концепции.

Функциональное программирование противоположно этому, оно нарушает SRP, запрещает повторное использование (каждая функция написана для однократного использования).

В чем проблема функционального программирования?

Допустим, следующий пример скопирован из сети

// non-functional smelly loop
redFruits = [];
for ( f in fruits ) {
  if ( 'red' === fruits[f].color ) redFruits.push(fruits[f]);
}

против

// fantastic functional alternative
greenFruits = fruits.filter(function(f) {
  return 'green' === f.color;
});

Оба работают, пока функционал недолгий. Функционал по каким-то странным причинам предпочитает сокращенный код (вместо ясности). Скатертью дорога, если хотите его отладить.

А теперь давайте рассмотрим следующий пример:

// functional
applePrice = fruits[Object.keys(fruits).filter(function(f) {
  return 'apple' === fruits[f].name;
})[0]].price;

В этом более позднем примере, если найден фрукт с именем яблоко и возвращается первый элемент, возвращается его цена. Этот более поздний пример ТАК УЖАСНЫЙ. Например, трудно понять, что происходит (потому что одновременно выполняется так много логики, цикла, логики и т. Д.), И трудно отлаживать. А что делать, если плода не существует ?. Он рухнет.

Вместо этого будут работать нефункциональные:

for ( f in fruits ) {
  if ( 'apple' === fruits[f].name ) {
    applePrice = fruits[f].price;
    break;
  }
}

и это легко понять.