Показать сообщение отдельно
Старый 31.05.2017, 11:15   #57  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
- "Вызывать класс напрямую - это моветон"
- "Info.add" это вызов класса
=> просто писать info.add это моветон.
Я прошу показать бон тон.
Макс, я в прошлый раз промолчал. Но раз ты настаиваешь...

info.add - это вызов метода класса через глобальную переменную infolog.
в аксапте есть три общеизвестных глобальных предопределенных переменных - infolog, session, appl.
ты точно хочешь продолжать защищать технологию атрибутов именно на этом примере?

если хочешь продолжать, то обрати внимание, что метод info.add по идее должен был бы быть protected + нужно было бы объявлять friend классы (error, warning, info) для доступа к add. но в аксапте нет friend.
Поэтому используется соглашение, что разработчики НЕ вызывают info.add, а должны пользоваться статическими методами Global::error, Global::warning, Global::info.

Поэтому приведенный тобой пример предельно НЕ типичен для обычной работы обычных людей...

Макс, я повторю вопрос - ты точно настаиваешь на этом примере в качестве обоснования технологи атрибутов?

=====================
А бон тон очень просто - класс, у которого есть статический метод main с арзументом Agrs. для такого класса должен быть создан menuItem. вызвать класс через стандартную конструкцию
new MenuFunction(menuitemDisplayStr(myMenuItem), MenuItemType::Display).run(args)

К сожалению, среди разработчиков МС не принято беспокоится о правах доступа, поэтому часто вызывают класс напрямую через конструктор + run. Этот способ не назвать бон тоном, но по факту игнорировать этот способ нельзя - нужно думать о нем и поддерживать его тоже.

Цитата:
Сообщение от belugin Посмотреть сообщение
Вариант 1. Унаследоваться и перекрыть необходимые методы. В случае, если проверка прав не проходит, вызывать методы предка. Case при создании заменить на SysExtension.

Вариант 2: Использовать SysIConditionalExtension
Макс, а можно проектик? Все участники тебе спасибо скажут. Особенно те, кто интересуется акс7, но у них еще нет возможности попробовать аксапту вживую.

Ты же сам сказал, что это "просто проставить атрибуты"


Цитата:
Сообщение от belugin Посмотреть сообщение
Не говорю - это часть другой дискуссии - запирать код или нет. Это оотогональное решение.
Согласен. Поэтому никаких ограничений на final и protected - да, их придется учитывать разработчикам на клиенте и заказчике. Но, согласен, это отдельная ветка обсуждения. Поэтому в этой ветке пропускаем.


Цитата:
Сообщение от belugin Посмотреть сообщение
1) Выше ссылка на пост Вани о том как использовать конструкторы.
2) Без конструкторов легко как и практически во всех компонентный моделях (метод init - те же самые RunBase получают параметры не из конструктора)
Мы все читать умеем. И все про конструкторы прочитали. С момента выхода статьи прошло несколько лет, поэтому время было.

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

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

Нет, Макс, это не одно и то же.
Нет, участники, это не придирка с словам и правописанию.

Итак, формулировка:
Цитата:
Сообщение от mazzy Посмотреть сообщение
Просто продемонстрируйте проектик с добавленной функциональностью, которую могут использовать пользователи со специальными правами,
в которой используется мощнейшая технология атрибутов и SysExtensionAppClassFactory::getClassFromSysAttribute.

Ведь это ж "просто пометить атрибутом".
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 31.05.2017 в 11:28.