|
![]() |
#1 |
Участник
|
Цитата:
Если да, то тогда зачем эти вопросы? Если нет, то попробуйте ответить на вопрос - чем отличаются new и construct? -------- Я утверждаю, что 1. Для подавляющего большинства (99.9%) прикладных классов на вход нужен хотя бы один параметр. 2. Де факто, в ах стандартом для передачи параметров выбран объект класса Аргс. 3. Аргс уже сейчас используется при инициализации всех интерфейсных объектов (формы, отчеты, запускаемые классы с main, даже джобы!) Почему не продолжить логику и не сделать передачу аргс обязательным параметром при создании любого экземпляра класса? Ссылка на то, что так (без параметров) сделано в кривой реализации пакетов и цил - это то же самое, что сказать, что давайте равняться на жигули как на эталон машиностроения, а не на тойоту например.... Последний раз редактировалось ta_and; 17.07.2017 в 21:28. |
|
![]() |
#2 |
северный Будда
|
Можно сколько угодно критиковать подход к реализации пакетника - но он есть, и под это надо подстраиваться. По крайней мере, пока его не изменит МС. Иначе о каком едином подходе в разработке может идти речь? Если каждый разработчик будет использовать только свои собственные паттерны, то можно сразу говорить о нечитабельности кода в целом
__________________
С уважением, Вячеслав |
|
![]() |
#3 |
Участник
|
Цитата:
Цитата:
Цитата:
Цитата:
Представьте, что вы пришли в управляющую компанию за справкой. А вам говорят, в течение 5 рабочих дней вы выдадим вам полный комплект документов по вашей квартире. Приходите на следующей неделе." А вы такой: "ну мне же только справку...". А вам отвечают: "Извините, законодательство ввело новый стандарт, на любой запрос мы готовим полный пакет документов."
__________________
// no comments |
|
![]() |
#4 |
Участник
|
Приведите пример прикладного класса, которому не нужен ни один параметр?
Цитата:
Сообщение от dech
![]() Представьте, что вы пришли в управляющую компанию за справкой. А вам говорят, в течение 5 рабочих дней вы выдадим вам полный комплект документов по вашей квартире. Приходите на следующей неделе." А вы такой: "ну мне же только справку...". А вам отвечают: "Извините, законодательство ввело новый стандарт, на любой запрос мы готовим полный пакет документов."
Скорее - это единый формат для всех справок. Т.е. заголовок, шапка, реквизиты, тело - все отформатировано в едином виде. если чего-то не нужно, то оно просто пропущено. и место остается пустым. Зато мы получаем единый формат всех документов. Если нужно получить реквизиты - мы знаем куда смотреть! Если заголовок - что это за документ - смотрим заголовок! в нужном месте. не думая ни о каких других местах и способах достать что же это за документ перед нами и не переворачиваем документ, чтобы посмотреть на обороте, где рыбу заворачивали. |
|
![]() |
#5 |
Участник
|
Цитата:
Да нет, пример самый подходящий. Что я вижу, исходя из нашего разговора? С одной стороны вы хотите обязать new() принимать параметр и считаете это золотым стандартом (которого, кстати не придерживается M$). С другой стороны вы хотите сделать применение Args стандартом де-факто. Т.е. идеальный вариант для вас, это X++: void new(Args _args) Цитата:
Да и что будет, если так делать, как вы хотите? Представляете сколько параметров передается из метода в метод повсюду? Если все это стандартизовать, то боюсь, что от огромного количества экземпляров данного класса AOS-ы начнут дико свапить на диск, а пользователи сожгут вас на костре.
__________________
// no comments |
|
![]() |
#6 |
Участник
|
О. Да. 0.1 процента всех классов.
Да. только с маленькой поправкой: X++: void new(Args _args = null) При чем здесь передача параметров из метода в метод? Конструктор вызывается один раз для создания экземпляра. Полюбому в созданный экземпляр передаются входные параметры. Сейчас как раз это делается с помощью куевой хучи неформализованных методов аля initFromArgs и тому подобной лабудени. Я предлагаю всего лишь законодательно это закрепить. Мои мечты все равно не сбудутся. У М$ всегда свои планы на вечер. Но помечтать то я могу?... Огромного количества чего? Того, что уже есть в системе? Что уже и так генерится и существует для каждого интерфейсного элемента и может быть запросто передано в класс? Вы серьезно? Ничего, что все main вызываются с передачей параметра аргс? это Вас не смущает? |
|
![]() |
#7 |
Участник
|
Я давно понял вашу позицию, но вы упрямо продолжаете держаться за воздух.
Наберите-ка лучше в поиске по содержимому классов такую ключевую фразу: X++: void new() Цитата:
![]() Цитата:
Сообщение от ta_and
![]() При чем здесь передача параметров из метода в метод?
Конструктор вызывается один раз для создания экземпляра. Полюбому в созданный экземпляр передаются входные параметры. Сейчас как раз это делается с помощью куевой хучи неформализованных методов аля initFromArgs и тому подобной лабудени. Цитата:
Короче, ваша идея с аргс - чисто солдафонская привычка: грубо, топорно, но зато понятно и надёжно. А какова цена - да не важно совсем, главное работает и всем понятно))). Всё, я с вами больше не спорю. Нет никакого смысла.
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: skuull (4). |
![]() |
#8 |
Banned
|
Цитата:
Это может быть и имя, и аргс, и массив параметров. В стыдном PHP например это делается так PHP код:
PHP код:
А есть и такая фишка ReflectionClass::newInstanceWithoutConstructor — Creates a new class instance without invoking the constructor. http://php.net/manual/en/reflectionc...onstructor.php От передачи ссылки или null - системе не поплохеет. Использование метаданных в случае данной темы - это само по себе не глупо. Автор темы просто устал от того бардака который привнесли в неплохую и законченную систему. Солдафонство в том смысле что должен быть единый и единственный фрэймворк в конкретном продукте/платформе, единообразие и следование уставу - это то что доктор студентам прописал ![]() |
|
![]() |
#9 |
NavAx
|
Что хорошего в передаче Args, если это не вызов через menuItem? Куча бессмысленных параметров, из которых будет лишь один будет иметь смысл, да и тот предельно обобщенный Object. Т.е. вся надежность в том, что надежно удается обмануть компилятор и словить ошибку в runtime.
Здесь соглашусь. Такого многие стыдятся. Но из уважения к твоим религиозным убеждениям про "граальность" некторых языков, тему развивать не вижу смысла.
__________________
Isn't it nice when things just work? |
|
Теги |
sysextension framework, sysoperation framework, как правильно, полезное |
|
|