OberonCore
https://forum.oberoncore.ru/

Разное по оформлению кода
https://forum.oberoncore.ru/viewtopic.php?f=29&t=1097
Страница 1 из 1

Автор:  Илья Ермаков [ Пятница, 25 Июль, 2008 21:14 ]
Заголовок сообщения:  Разное по оформлению кода

Думается, что в случае, когда мы делаем скрытую реализацию некоторого типа, имеет смысл ставить метку экспорта у тех процедур, которые реализуют интерфейсные. Смотришь на модуль - и сразу видно, что от интерфейса, а что дополнительно для реализации... Благо язык позволяет ставить ничего не значащую * у процедуры неэкспортированного типа... Как вариант: не звёздочка, а жирность без звёздочки.

Ещё: у самих ОМИНК не принято вводить неэкспортированные связанные процедуры, такие процедуры делаются обычными. Никакой пользы кроме той, что названа выше (видимость того, что к чему) тут не видно. Если ставить звёздочки, то можно вводить и связанные скрытые процедуры - к ним ведь нагляднее обращение (obj.Init а не Init(obj), хотя вот сам я из-за Оминков привык уже ко второму...).

Автор:  Valery Solovey [ Суббота, 26 Июль, 2008 09:57 ]
Заголовок сообщения:  Re: Разное по оформлению кода

Илья Ермаков писал(а):
Думается, что в случае, когда мы делаем скрытую реализацию некоторого типа, имеет смысл ставить метку экспорта у тех процедур, которые реализуют интерфейсные. Смотришь на модуль - и сразу видно, что от интерфейса, а что дополнительно для реализации... Благо язык позволяет ставить ничего не значащую * у процедуры неэкспортированного типа... Как вариант: не звёздочка, а жирность без звёздочки.
Не объясните по-подробнее? А то я что-то запутался. "Интерфейсные" - значит "имеющие реализацию", а "дополнительно для реализации" - "абстрактные"? И где именно помечать: процедурную переменную в самой записи или конкретную процедуру?

ИМХО, звёздочка, использованная не по назначению - трюк. И его смысл следует оговаривать зарание, иначе станет только хуже: новичёк, увидев такое, решит, что неправильно понял документацию. Разобраться-то он, конечно, разберётся, но потеряет много времени.

Автор:  Илья Ермаков [ Суббота, 26 Июль, 2008 10:52 ]
Заголовок сообщения:  Re: Разное по оформлению кода

Нет, дополнительные - это те, которые никогда не вызываются снаружи. Т.е. служебные, внутренние модуля реализации.
А "реализующие интерфейсные" - это те, которые в базовом абстрактном типе экспортированы, а в нашем скрытом - реализованы. Они ведь будут вызываться непосредственно снаружи модуля (через виртуальную таблицу), т.е. по сути, экспортированы (ещё в базовом типе); при их написании ориентируемся на контракт и т.п.

У Оминк где-то тоже видел такую фишку, но трудно понять - то ли это просто тип сначала был экспортирован, а потом скрыт, а убирать звёздочку у процедур не стали, то ли они тоже экспериментировали с таким стилем.

А разрешение метить звёздочкой элементы неэкспортированного владельца - это по стандарту языка. В КП/ББ это, к тому же, влияет на доступность через Meta.

Автор:  Евгений Темиргалеев [ Среда, 28 Сентябрь, 2011 23:47 ]
Заголовок сообщения:  Re: Разное по оформлению кода

Если RETURN ставить только в конце процедуры-функции (как в Обероне-07), то его жирным можно не выделять.

Автор:  Владислав Жаринов [ Четверг, 06 Октябрь, 2011 09:00 ]
Заголовок сообщения:  Re: Разное по оформлению кода

А это всё со звёздочками как-то связано с тем, что на схеме из этого поста названо "разновидимостью"?

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/