OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 27 Апрель, 2024 23:02

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 13 Июнь, 2023 22:20 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1167
собственно, сабж. точнее, даже шире: почему `Domain.sequencer` имеет тип ANYPTR, а не `Sequencers.Sequencer`?

ну да, я понимаю: Sequencers импортирует Stores, поэтому в Stores заимпортить правильный тип нельзя. окей. но я бы тут скорее в секвенсорах вместо типов из Stores принимал ANYPTR. потому что секвенсер, по сути, реализован один раз и в одном модуле, а результат `GetSequencer()` приходится кастовать в единственно возможный, тащемта, тип каждый раз.

да ладно, в конце концов `Stores.Store` не наследуется ни от чего — так можно было уже абстрактное `Store* = POINTER TO ABSTRACT RECORD` положить в секвенсоры. ну да, некоторое нарушение логики — но минимальное, а удобства в итоге добавляет.

понятно, что в mainline Store перемещать не будут (хотя почему бы и да), но в принципе: один же фиг у нас с ANYPTR получилось нарушение красивой типизации. по-моему, перемещение базового Store в секвенсоры всё-таки чуть лучше. как считаете, коллеги?

p.s.: и почему секвенсоры омики решили не документировать? ну да, в Models есть обёртки. всё ещё не причина не рассказывать, что это: секвенсоры всё равно дёргают все кому не лень.

p.p.s.: или вообще не выпендриваться, и затащить все секвенсоры в Stores. а в Sequencers сделать реэкспорт для совместимости, да директорию оставить. один фиг там десяток строчек абстрактных интерфейсов. некрасиво, но как по мне — приемлемо. всё равно Sequencers — модуль недокументированый, то бишь, его можно переделывать как захочется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 14 Июнь, 2023 14:05 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1167
в общем, в LC я переместил `Sequencer` в "Stores". а в "Sequencers" сделал реэкспорт, и оставил несколько второстепенных определений, которые не подвязаны на "Stores". и `Domain().GetSequencer()` теперь возвращает правильно типизированый объект, так что прошёлся по коду среды, и поубирал ненужные больше WITH-guard'ы.

таким образом, весь старый код будет компилироваться как раньше (он получает ANYPTR, и потом кастует его в правильный тип), а новый код может обойтись без кастов. ну да, нарушение красивого разделения интерфейсов. но как по мне, то пусть: нормально типизированые секвенсеры для пользовательского кода лучше, чем красивое разделение по модулям, и постоянное жонглирование guard-ами.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

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


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

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


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

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