Связывание форм (GUI) с данными: императивно vs декларативно
От: Shmj Ниоткуда  
Дата: 29.07.19 19:01
Оценка:
Почему все верят, что декларативный подход рулит и на порядок упрощает работу?

Вот, давайте на примере. Есть поле на форме, вам нужно установить дату и подсветить, если дата нечетная.

Императивный подход (примерно):

DateTextBox.Text = UIConverter.ConvertToText(businessObject.Date);

if (businessObject.Date.IsOdd)
   DateTextBox.Background = Color.Red;


Декларативный подход типа:

<Window.Resources>
        <local:DateBacklightConverter x:Key="dateBacklightConverter" />
</Window.Resources>

<TextBox Text="{Binding Date}" Background="{Binding Source=Date,Converter={StaticResource dateBacklightConverter}}" />


Теперь давайте какие реальные плюсы у т.н. декларативного? Букв меньше не стало. Совокупная сложность кода не понизилась — все равно в конвертере есть проверка if и выбор цвета. В XML-е писать не удобнее, но даже не в этом суть.

Только вера в то, что декларативно типа круче?

Ну ОК, вы скажите что ковертор можно будет задействовать в другом месте. Но! Что мешает мне вынести:

if (businessObject.Date.IsOdd)
   DateTextBox.Background = Color.Red;


— в отдельный метод и просто его вызывать? Вам для конвертора придется целый класс содавать а мне — только метод.

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

Получается, что никакого реального преимущества, кроме хайпа, нет
Отредактировано 29.07.2019 19:13 Shmj . Предыдущая версия . Еще …
Отредактировано 29.07.2019 19:04 Shmj . Предыдущая версия .
Отредактировано 29.07.2019 19:03 Shmj . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.