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

Гнатына Александр gnatyna на ya.ru
Пт Мар 19 02:19:34 PDT 2010


В сообщении от 19 марта 2010 11:50:52 автор Roman V. Nikolaev написал:
> Привет. Помогите осилить сабж. Есть несколько конкретных примеров и не
> понятно как нормально сделать:
> 
> Например есть модуль My::Config который берет данные о подключения к БД
> из txt файла, а так же через него получают некоторые конфигурационные
> параметры из БД (с помощью DBI). Таким образом получается зависимость
> что DBI нужен модуль конфига чтобы получить данные о подключении, а
> конфигу нужен DBI чтобы далее работать с параметрами хранящимися в БД.
Как мне кажется тут надо что-то вроде цепочки: My::TxtCfg, My::DBcfg, My::Cfg.

> 
> Или вот второй пример: модулю отсылки почты надо вести логи, и он
> подключает соответствующий модуль. И наоборот, модулю работы с логами
> надо, например в случае ошибки, отослать письмо.

Аларма на случай ошибки должна быть простая как два рубля. чтобы обязательно 
дошла. То есть send_email($to, $form, $subj, $messages) - непосредственно 
отсылает сообщение, my_send_email(куча параметров) использует send_email и 
пишет логи и варит кофе. Дублирование кода если будет, то в вызове send_email.
соответственно при разборе логов - вызывать send_alert_email - в котором не 
будет вызов записи в лог.
Если коротко, то не надо смешивать уровни абстракции.

-- 
С уважением, Гнатына Александр.


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