Здравствуйте, McSeem2, Вы писали:
MS>По-моему это как-то ненормально, все равно что глазную операцию делать через прямую кишку. Вот делаю я контрол на C#. Для его отладки я создаю простую форму и бросаю туда этот контрол. В дизайнере он должен уметь корректно отобразиться. И в этом-то заключается главная засада. Судите сами. Студия вызывает код контрола, который имеет право быть кривым и глючным (на этапе отладки, конечно же). Это значит, что стабильность среды разработки зависит от того, что я там наковырял своими кривыми руками. И заставляет меня наступать себе на яйца. Вот я редактирую код контрола. Далее переключаюсь в дизайнер, дизайнер видит, что код изменился, пытается скомпилировать и запустить новый код. А код кривой, он приводит к краху (ну или бесконечный цикл, или бесконечное отъедание памяти). И все, студия либо навернется, либо ее надо пришибать. При этом что-нибудь да отъедет в проекте. А если проект большой?
MS>Не кажется ли это мягко говоря, слишком самонадеянным? То есть, обещание корректно работать с некорректными объектами? Я имею право иметь кривой код в определенные моменты времени? Получается как у саперов — ты имеешь право на ошибку, но она будет последней в жизни.
Все верно.
Идея разделения на design-time и run-time изначально ущербна. В академически продуманных системах такого разделения нет. Смотрите как это сделано в ОС Оберон. В Обероне документ (документ — ну, то бишь — форма с "компонентами") — является персистентным объектом. Любой документ можно "открыть" одновременно в нескольких окнах. (В Дельфи или .НЕТ и т.д. Форма и Окно — одно и тоже, а в Обероне документ отображается в окне, документ и окно — разные вещи). Ну вот, мы просто берем и открываем один и тот же документ в двух разных окнах — в одном окне мы этот документ открываем "только для просмотра", а в другом — "для редактирования". Получается, что и design-time и run-time это одно и тоже. В окне "для редактирования" мы на этот документ "навешиваем" другие "компоненты" и мгновенно видим в "окне для просмотра" как это все выглядит в run-time. Поскольку все "навешиваемые", "внедряемые", и т.д. в документ другие документы тоже персистентные, то после сохранения главного документа сохраняются и они тоже (внутри него).
Непонятно почему создатели Delphi и прочих .НЕТ билдеров решили "пойти другим путем" разделив design-time и run-time на две сущности. Тем самым они добились усложнения системы и "изначальной ущербности".
Кстати среде BlackBox — разработки программ на языке Component Pascal (Oberon-2) исполнилось 10 лет. Oberon microsystems, видимо по этому поводу, сделала ее бесплатной и даже собирается в скором времени открыть ее исходные коды.
http://www.oberon.ch/blackbox.html (около 6 мегабайтов)
Рекомендую скачать хотя бы для того, что там в хелпе написано много полезной инфы по идеологии проектирования, типа как в книжке Гамма, Хелм, Джонсон, Влиссидес "Приемы объектно-ориентированного проектирования. Паттерны Проектирования."