Макросы Dart: повышение уровня абстракции разработки
Hola, Amigos! Недавно прошла конфа Google I/O 2024, на которой было представлено множество новинок, но сегодня поговорим о нашумевшей фиче — Макросы Dart. Кто не смотрел прямой эфир, сейчас расскажем, в чем соль.
Долгое время болевой точкой для разработчиков Dart была тривиальная, но утомительная схема сериализации и десериализации JSON-данных. Создание многократно используемого и достаточно мощного решения является сложной задачей в Dart, поскольку он не поддерживает рефлексию во время выполнения по соображениям производительности. В качестве альтернативы мы прибегаем к решениям по генерации кода, таким как JsonSerializable. Они зависят от внешних инструментов, которые запускаются перед самим кодом, что усложняет работу разработчика.
На конференции анонсировали предварительную версию радикально нового подхода к сериализации и десериализации JSON: макроса JsonCodable.
Как это работает? Откуда взялся метод toJson() (и сопутствующий ему конструктор fromJson())?
Это экспериментальная реализация новой системы макросов, призванной упростить работу разработчиков. Когда компилятор Dart видит аннотацию @JsonCodable(), он немедленно находит определение макроса JsonCodable в реальном времени и начинает его выполнять. Вот как работает макрос:
1️⃣ Создайте новый класс - новую конструкцию языка, которая позволяет добавлять новые объявления к существующим классам.
2️⃣ Прочитайте определение класса Vehicle, данное разработчиком, и определите, что у него есть два поля - description и wheels.
3️⃣ Добавьте новую сигнатуру метода toJson в класс дополнения.
4️⃣ Заполните тело метода toJson, чтобы обработать сериализацию полей description и wheels.
Всё это происходит без задержек и интегрировано в существующие рабочие процессы разработчиков, такие как горячая перезагрузка, как показано в скринкасте.
Как вам такие новости? Делитесь в чате своими мыслями.
Post #266
2.65K
- 👍 19
- 💘 11
- ❤ 5