• Python pylons webdev Отрефакторил тучу кода, переделал немного модели, изменил некоторые части системы, добавил пару моделей, имплементировал систему ивентов.
    Вот с последним всё оказалось очень и очень фигово. Класс системы ивентов, который принимает контекст, пользователя и соединение с бд, должен был импортироваться в куче классов, при этом сам должен иметь возможность импортировать другие классы для хендлеров ивентов. В общем, циклическая зависимость. Тучи их. Пришлось отказаться и сделать более прозрачно. С другой стороны, достаточно логично.
    С написанием больших приложений на пайтоне, проблема циклических зависимостей встаёт всё острее и острее. Стоит помнить одно — нужно проектировать систему на БУМАГЕ перед имплементацией и сразу выделять где есть кольца. Не всегда это "плохой дизайн", но решать лучше проблемы до написания сотен строк кода.
    Кстати говоря, для решения проблемы циклических зависимостей можно использовать Слабые ссылки (Weak References). Как я понял их суть(хотя я пока о них не читал почти ничего) в создании ссылок на первые объекты в циклической зависимости. Т.е. тогда она станет линейной. Потому почитаю о них и попробую что и как.

Replies (1)

  • @iorlas, weak references это просто спасение(: кстати, ивенты сам запиливал или взял то, что было в пилонах до мержа с bfg?