metaclass: (Default)
[personal profile] metaclass
Всякое конфигурирование приложений через позднее связывание, xml-конфиги и прочие аннотации-атрибуты чревато еще тем боком, что сдуру можно запросто удалить метод или класс на который формально ссылок в коде нет, и все это дело вполне себе соберется. А потом с грохотом умрет в рунтайме, и это еще хорошо, если на старте, а не где-нибудь в дебрях выполнения после сотни действий юзера.
(deleted comment)

Date: 2009-12-25 12:08 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Дает, да. Только, если честно - я не понимаю, зачем они. Большую часть приложений не нужно реконфигурировать на таком уровне при деплойменте.

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

Date: 2009-12-25 05:31 pm (UTC)
From: [identity profile] blacklion.livejournal.com
95% приложений на всякихз Spring и прочих фреймворках (Java2EE, да) с поздним связыванием, что я видел, в нём не нуждались. Не было там даже 2 реализаций одного интерфейса, и всё всегда вполне могло бы быть приколочено гвоздями

Date: 2009-12-25 09:31 pm (UTC)
From: [identity profile] jdevelop.livejournal.com
ну а как же Дизайн Паттерны™ и прочие Принципы Проектирования ОО-систем™ ? )

Date: 2009-12-25 12:18 pm (UTC)
From: [identity profile] potan.livejournal.com
Ага, помню в одном проекте делали связывание на этапе линковки - через инициализацию глобальной переменной в C++. Какие .o подсунул, такие классы и заработают.
Не то, что бы очень позднее, но и там плясок с бубном с зависимостями хватило.

Date: 2009-12-25 12:25 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Кстати, я похожее делаю в дельфях - там какие юниты подключены к проекту, у тех и вызывается инициализация, т.е. можно подсунуть регистрацию различных классов для одной цели.
На дотнете - невозможно в принципе, т.е. там невозможно создать код, который бы выполнился бы на старте по самому факту своего наличия в проекте. Можно поместить его в статик конструктор, но чтобы он выполнился - обязательно нужно, чтобы к классу хотя бы один раз зачем-то обратились явно из другого кода.
Т.е. сделать такое можно только подложив файлик со списком классов, которые нужно загрузить, по имени, и обрабатывая его самому при старте.
(deleted comment)

Date: 2009-12-25 12:54 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Это он и есть. И он меня отсутствием статических проверок типов немного напрягает. Похоже, что для всех конфигов позднего связывания надо добавить обработку при билде и старте - проверить кошерность.

Date: 2009-12-25 07:34 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Рефлекшеном можно искать список всех IAutoLoadable и дергать все.

Date: 2009-12-25 11:38 pm (UTC)
From: [identity profile] alexandr0.livejournal.com
А если как-нибудь вот так? http://stackoverflow.com/questions/607178/c-how-enumerate-all-classes-with-custom-class-attribute/607239#607239

Date: 2009-12-26 10:39 am (UTC)
From: [identity profile] metaclass.livejournal.com
Только если сборка с нужным классом уже загружена. А если использовать явный список - можно указать имя класса целиком, со сборкой, тогда она будет загружена.

Date: 2009-12-25 12:22 pm (UTC)
From: [identity profile] 184467440737095.livejournal.com
иногда помогает IDE.

Date: 2009-12-25 12:24 pm (UTC)
From: [identity profile] volger.livejournal.com
Сейчас идет к тому, что IDE это подмечают и сигнализируют удобными способами пользователю об этом, например, IntelliJ Idea при работе со Spring и Hibernate.
Плюс движения в сторону аннотаций непосредственно в коде, там-то уж все рядом лежит.
PS это я со своей, джавовской колокольни )

Date: 2009-12-25 11:25 pm (UTC)
From: [identity profile] alexandr0.livejournal.com
Делать возможной разработку только в нескольких IDE - как-то это нехорошо выглядит.

Date: 2009-12-25 01:34 pm (UTC)
From: [identity profile] sergiej.livejournal.com
Я, кажись, озвучивал историю как выловил мистическую ошибку когда по ночам вечный цикл убивал всю память. Произойти он не мог ни по какой нормальной логике, а только благодаря специфической конфигурации продукта динамические методы начинали вызыватья в цепочке, которая закикливалась.

Date: 2009-12-25 08:33 pm (UTC)
From: [identity profile] mak-sh.livejournal.com
А как же, любимая ошибка: "Segmentation fault".

Date: 2009-12-27 09:16 pm (UTC)
From: [identity profile] kurilka.livejournal.com
Будешь встраивать http://lambda-the-ultimate.org/node/3741 ?

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 27th, 2025 07:14 am
Powered by Dreamwidth Studios