OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 26 Апрель, 2024 06:45

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 76 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
СообщениеДобавлено: Воскресенье, 16 Ноябрь, 2008 20:46 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Илья Ермаков писал(а):
Почему не вынести этот порядок в IMPORT отдельного модуля, а в этом вместо списка их написать один, тот специальный?
Вполне разумный приём. Главное - мы не "портим" повторно используемые модули ненужными связями.
Мне кажется, что это - (весьма специфическая) разновидность паттерна Mediator.
Но для случая замкнутых (stand-alone) программ мне больше нравится вариант с правильным порядком модулей, передаваемых команде DevLinker.LinkExe или команде DevLinker.LinkDll.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 16 Ноябрь, 2008 22:42 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
AVC писал(а):
...Пока проблем нет. Но теперь добавляем ещё один момент: по злой воле программного архитектора (или просто в силу открытости/расширяемости компонентной системы) их "пути пересеклись".

"по злой воле" -- по-существу, речь о том, как лучше сделать какой-то хак.

Надо всё-таки разделять: регулярный проект -- одно, хак -- другое. Тоже бывает, но -- другое.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 05:03 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
Завтра придет разработчик и от балды впишет строчку в случайное место старой программы. Хрупкость. Да.


Отнюдь. Все что я говорил относится к вменяемому разработчику.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 05:22 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Фиксация порядка делается не в обычном модуле, а в специально для этого сделанном, с соотв. названием (типа Init, Config или что-то ещё), который не несёт другой смысловой нагрузки. Можно динамически грузить из его BEGIN-а.


Ну вот импортируете вы в правильном порядке модули A и B. Модуль A импортирует модуль C. В какой-то момент модуль C начинает импортировать модуль B. Все ломается...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 08:35 

Зарегистрирован: Понедельник, 25 Февраль, 2008 08:42
Сообщения: 125
А чем плох тот порядок, что реализован в Delphi?

Отдельно есть "Project options" в котором мы указываем списком автосоздаваемые модули и доступные модули.

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

Кажется по местной иерархии, это третий способ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 09:52 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Vlad писал(а):
Info21 писал(а):
Завтра придет разработчик и от балды впишет строчку в случайное место старой программы. Хрупкость. Да.


Отнюдь. Все что я говорил относится к вменяемому разработчику.

Скорее среднестатистического. Которому плати бАльшую зарплату, у него ж работа сложная - проект сопровождать - баги [свои или предшественника] вылавливать. Да исчо чтоб жилось полегче, думать поменьше, натыкал да и ладно. Дайте струмент, который по ручкам будет бить - "error: ты чё натыкал? проект ломаешь, перетыкивай".

И все [самое главное - конечные пользователи/система образования] на это смотрят как на должное. А цель системы образования - воспитать грамотных разработчиков. Которые будут думать. И которые составят конкуренцию "вменяемым". Если удастся создать критич. массу грамотных, то вменяемым придётся переучиваться, а особо "вменяемым" идти на пенсию.

Извините за оффтоп.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 10:28 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
ain писал(а):
А чем плох тот порядок, что реализован в Delphi? Отдельно есть "Project options" в котором мы указываем списком автосоздаваемые модули и доступные модули.
Только давайте не будем путать модули и диалоговые формы, хорошо? Что такое вообще этот ваш "автосоздаваемый модуль"?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 11:54 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Начнём с того, что такое "проект" в компонентной системе :-)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 13:01 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Vlad писал(а):
В какой-то момент модуль C начинает импортировать модуль B.
Неясно, "кто кого" импортирует, а главное - что значит "в какой-то момент ... начинает импортировать".
(Это не критика. Просто уточните, пожалуйста.)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 15:46 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
AVC писал(а):
Но главное - изменение состояния другого модуля из своего блока инициализации должно рассматриваться как исключение из правила (IMHO, это нужно редко).
dir не имеет отношения к состоянию того модуля, в котором находится. Или по-другому: смена (и только лишь смена) директории никак не влияет на работу модуля.
Info21 писал(а):
AVC писал(а):
1. Включить (явно неиспользуемый) модуль в список импорта другого (info21).
В варианте 1. необходимые связи выражены статически, проверку делает компилятор.
Но всё-таки, импорт был добавлен в язык для других целей. А Вы предлагаете использовать побочный эффект данной особенности. Хакерством отдаёт : ). К тому же, это особенность реализации. Другие компиляторы данного языка при компиляции не заметив использования импортированного модуля могут его исключить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 17:03 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Евгений Темиргалеев писал(а):
Извините за оффтоп.


Если бы еще этот оффтоп хоть косвенно к теме относился...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 17:08 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
AVC писал(а):
Vlad писал(а):
В какой-то момент модуль C начинает импортировать модуль B.
Неясно, "кто кого" импортирует, а главное - что значит "в какой-то момент ... начинает импортировать".
(Это не критика. Просто уточните, пожалуйста.)


Модуль Init импортирует модули A и B. Порядок важен - сначала A, потом B. Модуль А для реализации своей функциональности импортирует модуль C. Наступает "какой-то момент" - добавлние новой функциональности. Модуль C начинает импортировать модуль B. В результате модуль B будет загружен до модуля A не смотря на "форсированный" порядок импорта в модуле Init.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 19:12 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Valery Solovey писал(а):
Другие компиляторы данного языка при компиляции не заметив использования импортированного модуля могут его исключить.
Это будет нарушением основополагающего принципа Оберона: компилятор не должен быть хитрее даже самого тупого программера.

Почему же это хакерство. Порядок загрузки и инициализации модулей с учетом импорта оговаривается явно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 19:57 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Vlad писал(а):
... "форсированный" порядок импорта в модуле Init.

Почитайте сначала определения.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 17 Ноябрь, 2008 20:10 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
Vlad писал(а):
... "форсированный" порядок импорта в модуле Init.

Почитайте сначала определения.


Вы не поняли об чем речь или вам нечего возразить?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 18:27 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1449
Откуда: Киев
Vlad писал(а):
Я максимально упростил пример. Естественно, что все потроха прячутся за абстрактным интерфейсом.

Не очень хорошая идея работать с переменными через вызовы процедур на мобильном телефоне.

Vlad писал(а):
Если бы и было нарушение, то инкапсуляции...

Нет, Влад. Если открываются в общий доступ приватные переменные - это нарушение инкапсуляции, а если относящиеся к классу переменные выносятся в другой класс - это нарушение структурирования.

Vlad писал(а):
Comdiv писал(а):
Ваш подход решает только проблему с недетерменированной загрузкой класса. Но если Вы более тщательно обдумаете мой первый пост, то заметите, что и моё предложение решало эту проблему.

Нет, оно оттягивало конец :) Попробуйте присмотреться к моемк варианту еще раз с новым пониманием.


Что Вас смущает в моём варианте? То, что некоторые переменные инициализируются прямым обращением к переменным других модулей? Согласен, нехорошо. Так это решается просто: в процедуру инициализации модуля добавляются соответствующие параметры, и инициализация производится по ним. А Вы зачем-то усложняете.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 76 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB