Статьи

О сборе идей для упрощенного API привязки данных

В моей предыдущей статье я ссылался на блог Кая, где различные члены сообщества хотели использовать более простой API привязки данных и просили дать комментарии.

Этот блог предназначен для сбора различных предложений по упрощению привязки данных в одном месте, чтобы мы могли обсудить их относительные достоинства.

Сначала я изложу свои личные предубеждения.


  1. Хотя я нахожу это немного многословным, мне все еще очень нравится существующий
    API привязки
    данных . Это потому, что любой другой
    API, который я пробовал, налагал предположения о том, что я хотел сделать, что в конечном итоге слишком ограничивало меня.

  2. Учитывая предыдущее, я предпочитаю сохранить существующий
    API и рассматривать его как язык ассемблера для привязок.

  3. Легко представить себе удобный слой, добавленный поверх существующего кода;
    Таким образом, если вам нужна полная мощность привязки данных, вы переходите на более низкий уровень абстракции.

Во-вторых, каковы различные способы повышения уровня абстракции?

Имеет два набора виджетов интерфейса: несвязанные и связанные виджеты

Сами привязываемые виджеты обладают интеллектом, необходимым для их связывания.

Мне не нравится этот подход по нескольким причинам.


  1. С точки зрения сообщества это вынуждает авторов виджетов SWT создавать две версии каждого виджета: обычную и привязываемую.

  2. Привязываемый виджет почти всегда делает предположения о видах вещей, которые вы можете захотеть связать с ним.
    Например, элементы управления таблицами в мире Microsoft, по крайней мере, раньше предполагали, что вы привязывались к курсору базы данных. Android (который также использует подход связываемых виджетов) несколько решает эту проблему, позволяя вам реализовать свой собственный курсор базы данных.

  3. В конце концов, это не похоже на оптимальное разделение интересов.
    При чтении
    API для элемента управления вы должны иметь в виду, что API для работы с самим элементом управления смешиваются с API для привязки к нему. Результатом является менее намеренный
    API в самом элементе управления.

Слой внешнего DSL поверх привязки данных

Это подход таких вещей, как Beans Binding, а также несколько известных языков сценариев, таких как Perl и Ruby.

Люди хотели бы написать что-то вроде:

String someOutput = "Hello, my name is ${person.firstName} ${person.lastName}";

Или (из ошибки 195222 ):

BeanObservables.observeValue(person,"parents[@mother=true]/person/name");

Моя личная мысль здесь такова:


  1. Это было бы очень приятно

  2. Было бы трудно правильно кодировать

  3. В идеале вам нужна поддержка IDE, расширяющая проверку статических типов Java на этот встроенный язык запросов на основе строк.

В принципе, мне это нравится, но это звучит как большая работа.

Реализация внутреннего DSL для упрощения привязки

Открытые вопросы