Metaprogramming: Что это такое? Зачем нужно? Когда использовать?

Просмотров: 3, 428   |   Загружено: 2 год.
icon
Dev Jungles - Andrii Podkolzin
icon
220
icon
Скачать
iconПодробнее о видео
#DevJungles #dotnet #expressions

Telegram канал Dev Jungles -

Поддержать канал можно:
- Подписавшись на Patreon: patreon.com/user?u=79336362
- Спонсорством на YouTube
- Переводом на карту или пополнением банки монобанка:
Dev Jungles YouTube Channel Fund


Номер карты банки:
5375 4112 0230 1466

- Или криптой:
BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy
ETH - 0x2903f63ba9009732272e91a299053b9d7b623216

USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T

LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2

DOGE - DPwon439jf3axVSBwyuXso6z7CivuJF655
AAVE - 0x2903f63ba9009732272e91a299053b9d7b623216
Waves - 3P8D57Zw7CrqW2o7dHpvZR2UzAzQRFA2kZd


Полный стрим:

Если никогда не слышали про Expresion Trees, то зачем они вам могут понадобится:
- Строить динамические фильтры на основе данных пользователя
- Где-то ускорять рефлексию, если она стала узким местом
- Выстраивать потрясающие API, что реализуют Open-Closed принцип из SOLID настолько, насколько это вообще возможно.

Когда программе на вход подают программу и что-то выдают на выход, это называется метапрогрммирование. В целом, иногда даже наоборот: программе скармливают данные, аргументы и параметры и на выход она отдает программу.

Таким образом первой метапрограммой с которой сталкивается любой разраб будет компилятор. Ну или интерпретатор, если вы из Этих. Затем могут следовать различные scaffold программы и простенькие кодогенераторы вроде того что генерирует вам DbContext из БД на удаленном сервере.

C# довольно богат инструментами метапрограммирования. У нас как минимум есть:
- Продвинутая рефлексия
- Деревья выражений (aka Expression Trees)
- Динамическая компиляция
- Reflection.Emit
- Roslyn Compiler Platform, что открывает нам путь к своим анализаторам и генераторам кода(Source Generators and Source Analyzers)

Думаю на этом канале со временем сформируется целый отдельный плейлист с подробным разбором каждой из этих тем с прмерами и трюками. Мне есть что рассказать на эту тему и мне интересно копать ее дальше.

Но с чего-то нужно начинать. Я долго откладывал эту тему опасаясь, что не раскрою ее достойно за один раз. Что бы перестать боятся решил начать с чего-то небольшого, а потом на это навешивать многие уровни.


Тайм-коды:
00:00 - О чем видео
01:03 - Определение метапрограммирование
02:11 - Варианты метапрограмм
05:08 - Что есть в .Net для метапрограммирования
14:39 - CodeDom.Compiler
16:21 - Expression Trees
17:20 - Для чего можно использовать Expression Trees

Похожие видео

Добавлено: 55 год.
Добавил:
  © 2019-2021
  Metaprogramming: Что это такое? Зачем нужно? Когда использовать? - RusLar.Me