блоки и yield. Мы в какой-то метод инжектируем произвольный блок, о
котором метод ничего не знает, но его вызывает. Есть сложности с
нюансами типа нескольких зависимостей или возврата результатов, но,
имхо, блоки это чистой воды IoC.
16 августа 2011 г. 1:40 пользователь alexey.petrushin
<alexey.petrushin@gmail.com> написал:
> Хотел бы немного обсудить такую заброшенную концепцию как инверсия
> управления.
>
> На эту тему даже есть несколько презентаций, Джим Вейрих, еще кто-то -
> создатель IoC Needle. Суть вкратце - они попробовали, у них получилось
> хуже чем без и сделали вывод что IoC - неприменим для Ruby.
>
> Мне кажется что то что их понимание того, что такое IoC / DI несколько
> не полное (или может я что-то не так понимаю).
>
> Восновном, все аргументы сводятся к тому что поскольку в руби и так
> есть метапрограмминг то IoC не нужен. Подозреваю, что это происходит
> из-за того что IoC пошли из мира Java и поскольку там нет
> метапрограмминга, то байткод-манипуляция которую выполняет IoC имеет
> огромное значение.
> И, по моему из-за этого у многих создалось впечатление что байткод-
> манипуляции и метапрограмминг - это и есть то чем должен занимаеться
> IoC. Но это не так, это вообще не имеет никакого отношения к IoC, это
> просто конкретная реализация этой концепции в Java.
>
> При этом совершенно игнорируются то для чего IoC собственно и
> создавался - разрешение зависимостей, автоматический поиск, загрузка,
> конфигурирование и сборка.
>
> Что самое смешное - предполагается использование IoC совместно с
> 'require' (никому не кажется это странным?) -особенно если учесть что
> основное назначение IoC - как раз и есть - избавится от всяческих
> 'require' и прочих явных управлений зависимостями.
>
> Вобшем, чуть больше ем полугода назад представился случай использовать
> IoC для решения одной конкретной задачи, и по моему субьективному
> мнению - использование IoC сильно ее упростило, вот этот IoC -
> https://github.com/alexeypetrushin/micon
>
> Там 2 конкретных примера - первый - краткая демонстрация что это
> вообще такое и как он работает.
> Первый пример - хороший пример как сделать Hello World с
> использованием IoC, но при этом он также и отличный пример неверного и
> неэффективного (в моем понимании) применения IoC.
> Именно такое использование демонстрируется в вышеозначенных
> презентациях и на его основании заключается неэффективность IoC
> вообще.
>
> Самое интересное во 2м примере, это тот-же первый пример, но
> переделанный так как и должен работать (в моем понимании) IoC (он там
> работает впаре с автоматическим загрузчиком классов). Там нет :require
> и явных конфигов - все ищется, загружается, конфигурируется и
> собирается автоматически.
>
> Особенно заметно преимущество IoC, когда так-же автоматически, без
> require, MyApp.config[:option_a] и прочего собирается приложение из
> десятков компонентов разбросанных по где-то 8-11 гемам.
>
> Вобщем, у меня ощущение - то-ли IoC незаслуженно забыты, я чего-то не
> понимаю, было-бы интересно узнать что вы думаете.
>
> P.S.
> еще чуть подробнее про IoC http://ruby-lang.info/blog-ru/vy-niedootsienivaietie-moshch-ioc-u3l
> а это собственно само приложение на его базе
> http://ruby-lang.info/blog-ru/rad-vieb-frieimvork-po3
>
> --
> --
> Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
> FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
>
> Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
> ror2ru@googlegroups.com
> Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
> Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru
--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru
Комментариев нет:
Отправить комментарий