Після першої своєї роботи — кривавого ентерпрайзу, я влаштувався у стартап. Там ми взяли нову тоді 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