MDA for Frontend – Пример: логирование



MDA for Frontend – Пример: логирование

0 0


frontentmda

MDA in Frontend Presentation

On Github daniilguit / frontentmda

MDA for Frontend

Даниил Гительсон

Читабельность кода

  • Документация

    // 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 Даниил Гительсон