Почему говорят, что ООП это зло?
Глупости. ООП - очень мощная парадигма. Бывают кейсы, когда она слишком накладна, это правда, но заявлять, что она зло...
Безусловно, если обмазываться всякими хаскелями, лиспами, эрлангами, скалами... где ООП парадигма может не давать профита, либо не применима вовсе - конкретно в тех языках ее использовать и не нужно.
В языках же заточенных по ООП парадигму - ФП с большой вероятностью будет плохой идеей.
Как то статья была, жаль не нашел (если кто найдет - отпишите в комментариях пожалуйста), со сравнением ООП и ФП, одним из тезисов было сравнение существующих принципов и паттернов, в ООП: наследование, полиморфизм, инкапсуляция, SOLID, IoC, ServiceLocator,... а у ФП: функции, функции, функции...
ФП сейчас набирает популярность, однако много людей, в том числе из моих знакомых, ярых поклонников этого направления вернулись обратно к "классике", в основном причина была такая: слишком высокая цена поддержки.
Просто попробуйте одно, затем другое и придите к тому варианту который вам больше понравится. Где то нужно ООП, где то не нужно. Полиморфизм, в виде виртуальных функций, к примеру позволяет прекрасно избавиться от лишних условий.