[Moscow.pm] Как бороться с циклическими зависимостями?

Akzhan Abdulin akzhan.abdulin на gmail.com
Пт Мар 19 02:11:57 PDT 2010


Обычно при наличии циклической зависимости есть несколько способов её
вылечить.

Самый распространённый - разделить модуль на два, один с функционалом без
зависимости, а другой - оной зависимостью.

Кстати, для почты так и напрашивается два слоя, системный (реализация) и
уровня приложения (с логгингом).

Далее,
Кстати, в мире Ruby обычно информацию о подключении держат отдельно, в файле
database.yml.

Соответственно, просто
use YAML qw( Load );

my $connection_parameters = Load("${APP_ROOT}/config/database.yml");


19 марта 2010 г. 11:50 пользователь Roman V. Nikolaev
<rshadow на rambler.ru>написал:

> Привет. Помогите осилить сабж. Есть несколько конкретных примеров и не
> понятно как нормально сделать:
>
> Например есть модуль My::Config который берет данные о подключения к БД
> из txt файла, а так же через него получают некоторые конфигурационные
> параметры из БД (с помощью DBI). Таким образом получается зависимость
> что DBI нужен модуль конфига чтобы получить данные о подключении, а
> конфигу нужен DBI чтобы далее работать с параметрами хранящимися в БД.
>
> Или вот второй пример: модулю отсылки почты надо вести логи, и он
> подключает соответствующий модуль. И наоборот, модулю работы с логами
> надо, например в случае ошибки, отослать письмо.
>
> Пока что вижу решение в разделение модуля конфига на два модуля. Один
> который просто будет считывать файл конфига и отдавать DBI. Другой уже
> со всем остальными конфигурационными параметрами и работой с DBI.
>
> По второму примеру даже не знаю ... везде как-то размазывать
> функциональность по разным модулям? Они ведь бывают довольно сложные и
> не хотелось бы дублировать кучу кода.
>
> P.S. Надеюсь понятно объяснил.
>
> --
>
>         Roman V. Nikolaev
>
> mail:        rshadow на rambler.ru
> icq:         198-364-657
> jabber:      rshadow на jabber.org
> site:        http://www.rshadow.ru
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20100319/9b040852/attachment.html>


Подробная информация о списке рассылки Moscow-pm