Лучшие практики при написании клеевого кода

Я задал этот вопрос, чтобы получить некоторые мнения по поводу клея кода.

Например, представьте, что у вас есть класс (псевдокод):

class MyClass
    int attribute a
    string attribute b

И чтобы представить эту модель данных, у вас есть ОБА и ползунок, и текстовое поле для представления a, и текстовое поле и произнесите... метку окна для представления b.

Очевидно, что когда один из этих объектов просмотра изменяется, вы хотите обновить остальные. Однако обновление всего представления, очевидно, неэффективно.

method onSomethingHappened(uiObject)
    model.appropriateAttribute = uiObject.value

Вопрос в том, что вы думаете о том, что делать дальше? Если объект модели реализует обратный вызов, который уведомляет слушателя, когда значение было изменено, позволяя написать связующий код как:

method modelChangedCallback(model, attribute)
    uiObject1.value = model.a
    uiObject2.value = model.a

Где вы можете проверить, что является измененным атрибутом, и ответить соответствующим образом? Это модель в Objective-C и Какао на Mac, по большей части.

ИЛИ, вы бы предпочли, чтобы ответственность лежала полностью в клеевом коде?

method onSomethingHappened(uiObject)
    model.appropriateAttribute = uiObject.value
    self.updateForAttribute("appropriateAttribute")

Оба этих подхода могут стать довольно сложными (как и проблема с клеевым кодом), когда ваш проект становится большим. Может быть, есть другие подходы. Как вы думаете?

Спасибо за любой вклад!

1 ответ

Решение

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

В веб-модели я бы, вероятно, поместил логику в веб-страницу, поскольку это можно сделать довольно дешево с помощью Javascript. Если у меня нет такой роскоши (т. Е. Я имею дело с "тупым" представлением), то, вероятно, имеет смысл сделать это в контроллере или модели клея-кода. Если такого рода вещи становятся достаточно распространенными, я могу зайти так далеко, что создаю некую форму универсального помощника, чтобы уменьшить объем кода, который мне приходится иметь дело.

Другие вопросы по тегам