середа, 6 жовтня 2010 р.

Порада для проектів зі складною системою подій.

У великих проектах переважно є своя складна система подій (з власними подіями) - вони генеруються користувачем, відповідями зі сервера, по таймеру, автоматично, сукупністю інших подій і т.п.
Вже не перший раз в моєму теперішньому проекті зіткнулась з тим, що в цих подіях мені було б добре знати, чи подія згенерована користувачем.

Найпростіший приклад - користувач може відкрити сторінку повідомлень і звітів, і тоді система посилає запит на сервер за цими самими повідомленнями і звітами. Але ще в системі є панелька, яка підсвічує користувачу, чи прийшли йому нові повідомлення/звіти. Для цього панелька теж генерує такий самий запит, по таймеру (кожну хвилину, на приклад). І ще в системі можливі події, які будуть призводити до оновлення даних зі сервера по звітах і повідомленнях. А от серверу ще потрібно знати час неактивності користувача, і якщо цей час більше години - вилоговувати його. Для цього серверу потрібно розрізняти, де запити, які означають активність користувача, а де - автооновлення.

Ще приклад - є функція показу початкового стану з відображенням панелі управління, яку потрібно викликати і коли всі вікна закриті і коли користувач натиснув кнопку повернення до початкового стану. Коли це все писалось, ніхто не думав про те, що повернення до початкового стану з відображенням панелі і закриття всіх вікон треба розділити, їх зв'язали намертво і зав'язали на одну подію, і про ситуацію, коли користувач відкрив кілька вікон одночасно - теж ніхто не думав.

Прикладів може бути багато - і їх всі можна було б обійти, розділивши функції, зробивши окремі запити, правильно зі самого початку організувавши архітектуру всього проекту. Але, по-перше, зовсім правильно організувати архітектуру великого проекту, на якому щей спостерігається текучка девів, відсутність піема і ТЗ кардинально міняється на льоту (у флеші таке часто трапляється) - нереально. Тим більше, якщо приходиш в середину проекту. Переписати все нафіг - бажання логічне, але на це вже нема часу, і знову-таки: не факт, що ти сам це все перепишеш правильно (див попередній пост).

А от навіть якщо прийшов у проект зі середини, вписати у всю систему подій один маленький прапорець - поки коли дедлайни не тиснуть на горло - не так складно, їсти не просить, а допомогти потім може в дуже багатьох ситуаціях.

Немає коментарів:

Дописати коментар