Это причина, по которой мы не позволяем миллениалам брать на себя контроль над проектом, они этого не понимают и снова и снова принимают неверные решения. Возможно, мы пропустим все это поколение. Интересно, умеют ли миллениалы подавать кофе? (шутить).
Функциональное программирование - это ужасно, ПЛОХО, ОНО УМЕРЛО 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; } }
и это легко понять.