Як 🍦 функціональне програмування не хотів вчити

Після першої своєї роботи — кривавого ентерпрайзу, я влаштувався у стартап. Там ми взяли нову тоді 8-у джаву та мікросервіси, все як має бути.

В мене був колега, який вже працював з 8-ою версією та вмів писати лямбди. Я ж зупинився на 6-ій і лямбди не вмів.

Для тих хто не з Java світу, лямбди та стріми це такі шматочки функціонального програмування які додали якраз у 8-ій версії. map(), forEach(), filter(), reduce(), find() і так далі.

Оцей мій колега всюди де була можливість, використовував стріми та лямбди. А я ними користуватися не міг, не розумів як працює і що робить map(), тому писав все на циклах.

Деякий час у нас були заруби на код-рев'ю, колега хотів щоб я переписав все на стрімах, а я навпаки — хотів, щоб він прибрав parallelStream() для кращої читаємості.

Мій варіант

List<Order> pendingOrders = new ArrayList<>(1);
for (Order order: customer.orders()) {
    if (order.isPending()) {
        pendingOrders.add(order);
    }
}

Його варіант

List<Order> pendingOrders = customer.orders()
    .stream()
    .filter(Order::isPending)
    .collect(toList());

Приклад з голови взяв, ну от ми й влаштовували заруби. А причина була одна — я не розумів ті лямбди. Тут ще просто написано, але коли якісь мапи туди сюди я дивився на код і не відстрілював що відбувається. Визнавати то я не хотів, новим трюкам вчитися не хотів, вмикав луддита і писав циклами.

З часом, з роками, я призвичаївся до тієї функціональщини та став її використовувати практично постійно. Перетворився на свого опонента. Але якихось зусиль для того не додавав, і даремно!

Якби я витратив трохи часу на навчання, подвився б відос, прослухав би курс, прочитав доку, то моя робота стала ефективнішою, а взаємодія у команді кращою. Олексій, будеш це читати — визнаю свою помилку😪

Тому не будьте як я. Маєте можливість на роботі вивчити щось нове — користуйтеся цим☝️

Це вже не кажучи про те що концепти функціонального програмування повинен знати кожен програміст.


Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred