?

Log in

No account? Create an account
Макс Лапшин's Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Wednesday, April 12th, 2006

Time Event
2:48p
Чуть выше говорили про DSL в рамках общения контроллера и MVC. Я упустил один момент. Модель может меняться асинхронно к событиям на контроллере (по событиям от другого контроллера). Каким же образом все View должны узнать об изменении данных?
Наверное, модель должна предоставлять ручки, за которые она будет дергать в случае если меняется ее состояние.

Состояние модели однозначно описывается набором Query-методов, т.е. константных, немодифицирующих методов. Значит изменение состояния модели однозначно является изменением возвращаемого значения хотя бы одного из таких query-методов.

Мне кажется, что модель должна на каждый query-метод предоставлять возможность подписаться на event о его изменении. Т.е. на каждый getProperty, должен быть onPropertyChange. Вне этого ничего быть, наверное, не должно.
4:05p
Вот такой код на руби:

things = [1,2,3]

if things.each do |thing|
puts thing
end.empty? then
puts "no things!"
end

Кто сможет объяснить, почему он работает так, как это можно от него ожидать?
6:21p
Возвращаясь к теме DSL. Модель, естественно не монолитная вещь. В ней тоже есть слои. Предположим, что мы смогли выделить предметную область, возникающую у программистов. Т.е. не пользовательскую предметную область, а программистскую. Положим, что проект нагруженный, так что эта часть написана на C++. На этом уровне обрежем С++ и сделаем прослойку для связи со, скажем, Ruby. Дальше, логику модели, связывающую предметную область программистов и предметную область пользователей мы напишем на внятном простом скриптовом языке. Действий там будет мало, так что потерь скорости немного.

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

Сокращая, кстати, время разработки, потому что распределенная компиляция большого С++-ного проекта занимает минут 20 минимум.

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

Вопрос: а такое на самом деле то бывает?

P.S. К чему тут DSL? Тот набор выставленных из C++ в руби методов и классов является DSL-ем.

<< Previous Day 2006/04/12
[Calendar]
Next Day >>
My Website   About LiveJournal.com