Читабельность кода
-
Документация
// The order is important:
// v3 followed by v1
var notificationDetails =
['FILTERRING_V2', 'FILTERING_V1']
Повышение уровня абстракции
Связывание рук
- Слабое: ReactПолная свобода в шаблонах
- Сильное: EmberСпециально суженная Handlebars
Декларотивный подход
- Помогает связывать руки
- Требует формализации словаря
Пример: логирование
Было
logger.event({name:'user_logged_in',uid:uid});
Пример: логирование
Стало
abstract class EventsLogger {
void userLoggedIn(String name);
}
var logger = generateLoggerImpl(EventsLogger);
logger.userLoggedIn(userId);
MDA
- Формализуем язык предметной области
- Описываем задачу на этом языке
- Описываем трансформацию описания
в более низкий уровень
MDA
MDA
ЯП
Модель
Объект
Язык/Метамодель
класс/прототип
Метаязык/Метаметамодель
N/A
MDA
- + Документация становится кодом
- - Создавать языки дорого
- Подходит если моделей много,
а языков мало
Пример: Формы
- Много разных форм
- Небольшой набор компонентов
- Вычислимые поля
- Проверка на сервере
Пример: Формы
- Много разных форм
- Небольшой набор компонентов
- Вычислимые поля
- Проверка на сервере
Пример: Формы
- Метамодель данных
- Метамодель форм
- Специальный язык выражений
- Описание в XML
- Кодогенерация в JS
Итого
- Инструментов мало: EMF
- Выскоий порог вхождения
- Хорошо бы поменять ситуацию
MDA for Frontend
Даниил Гительсон