Re[58]: О сопровождении
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.07 13:04
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

AVK>>Там всего одна проверка и ее так просто сгруппировать не получится, потому что последовательность проверок в случае свойств и событий разная. В свойстве есть интерцептор и его надо обязательно проверять до проверки сериализуемости.

КЛ>Соответственно, можно подумать и об унификации последовательностей.

Что там унифицировать? И зачем?

КЛ>а) унифицировать интерфейсы (отказаться от лишних);


Я тебе еще раз повторяю — IsSerializable и так уже унифицирован.

КЛ>б) унифицировать их реализации;


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

КЛ>в) сократит и упростит код самой последовательности, что благоприятно скажется на сопровождении.


Нечего там сокращать, там и так 3 строчки кода.

КЛ>Если абстрагироваться от деталей, то обе последовательности похожи. Поэтому их можно унифицировать и свести к такой последовательности:


КЛ>1) Проверить элемент на сериализуемость.

КЛ>2) Получить значение элемента для сериализации.
КЛ>3) Записать значение в МСП.

КЛ>Операция Проверить элемент на сериализуемость раскрывается так:


КЛ>1) Элемент — событие: проверить на сериализуемость.

КЛ>2) Элемент — свойство, и есть интерцептор: интерцептор проверить на сериализуемость.

Ничего то ты не понял. Не надо проверять интерцептор на сериализуемость. Надо проверить:
а) Интерцептор вобще есть
б) Если интерцептор есть, то спросить у интерцептора, готов ли он перехватить свойство для конкретного контекста.
И только если пункт а или б вернул false, нужно проверять элемент свойства на сериализуемость.

КЛ>3) Элемент — свойство, и нет интерцептора: свойство проверить на сериализуемость.


Те же яйца, вид сбоку. Что поменялось то?

КЛ>Операция Получить значение элемента для сериализации раскрывается так:


КЛ>1) Событие: получить значение события.

КЛ>2) Свойство и интерцептор: интерцептор получить значение свойства.
КЛ>3) Свойство и нет интерцептора: свойство получить значение свойства.

Мы уже на этот момент проверили наличие интерцептора. Ты предлагаешь сдублировать проверку?

КЛ>Операция Записать значение в МСП раскрывается так:


КЛ>1) Событие: записать значение события.

КЛ>2) Свойство, компонент, владелец — несет ответственность, сериализовать компонент.
КЛ>3) Свойство, компонент, владелец не несет ответственности, сериализовать ссылку на компонент.
КЛ>4) Свойство, коллекция, Сериализовать коллекцию.

И опять проверка свойство это или событие.
Итого — количество осмысленных действий не изменилось, зато добавилась куча одинаковых проверок по нескольку раз — есть интерцептор/нет его, событие это или свойство. Забавнейшая оптимизация.

КЛ>А можно сделать и немного по-другому, например, передать обязанности по проверке значения свойства операции Получить значение элемента для сериализации


Так и есть. Еще раз — я описал последовательность действий, а не код программы.

КЛ>операция Получить значение элемента для сериализации возвращает не компонент, а ссылку, которую нужно записать в файл.


Так нельзя, потому что в МСП ссылка и значение представлены разными типами узлов.
... << RSDN@Home 1.2.0 alpha rev. 688>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.