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

Roman V. Nikolaev rshadow на rambler.ru
Пт Мар 19 03:02:16 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 - в котором не 
> будет вызов записи в лог.
> Если коротко, то не надо смешивать уровни абстракции.
> 

Спасибо всем. Все логично. Наверно взгляд уже замылился у меня ... пора
отдыхать =)

-- 

         Roman V. Nikolaev

mail:        rshadow на rambler.ru
icq:         198-364-657
jabber:      rshadow на jabber.org
site:        http://www.rshadow.ru

----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20100319/20b077b0/attachment.bin>


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