Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Роман Неволин «Функциональные трюки для вашего объектно-ориентированного кода»

Роман Неволин «Функциональные трюки для вашего объектно-ориентированного кода»

Вы наверняка частенько слышите о том, какая же это чудесная штука - функциональное программирование. Все эти статьи и доклады про великолепие F#, Haskell, Scala и других функциональных языков на каждом шагу... Вот только в продакшене их все не видно.
Но вы же не думаете, что функциональное программирование - это только вышеперечисленные языки? Пусть этот блиц-доклад окончательно убедит вас в обратном, показав множество прекрасных идей из функционального мира, которые можно использовать в любом современном языке - например C#.

DotNetRu

May 14, 2017
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. 2

  2. 3

  3. 4

  4. 5

  5. Функциональные принципы на примере LINQ var adminNames = users .Where(x

    => x.Group == Group.Admin) .Select(x => x.Name); • Иммутабельность - в результате операции мы не изменяем существующий объект, а создаем новый. 7
  6. Функциональные принципы на примере LINQ var adminNames = users .Where(x

    => x.Group == Group.Admin) .Select(x => x.Name); • Иммутабельность - в результате операции мы не изменяем существующий объект, а создаем новый. • Функции первого порядка – LINQ-методы принимают в качестве параметров функции. 8
  7. Функциональные принципы на примере LINQ var adminNames = users .Where(x

    => x.Group == Group.Admin) .Select(x => x.Name); • Иммутабельность - в результате операции мы не изменяем существующий объект, а создаем новый. • Функции первого порядка – LINQ-методы принимают в качестве параметров функции. • Прозрачность – при вызове методов с одинаковыми данными мы получаем одинаковый результат. 9
  8. Полнота функций 28 Вопрос : что возвращает эта функция? Ответ

    : список пользователей, конечно! или null…
  9. Полнота функций 29 Вопрос : что возвращает эта функция? Ответ

    : список пользователей, конечно! или null… а может упасть исключение…
  10. 48

  11. Tomas Petricek & Jon Skeet Real-World Functional Programming: With Examples

    in F# and C# a.co/3wDvJVa Что бы такого почитать про эту вашу функциональщину?
  12. Но вообще, это все – только начало. Когда-нибудь мы с

    вами посмотрим на еще более веселые штуки.